2012-08-25 79 views
0

我正在C#中构建一个程序,并且使用了很多dll。但是,我相信我只使用每个dll的少量函数,所以想知道是否可以以某种方式访问​​dll并仅将使用的函数提取到单独的dll中。或者换句话说,我有2个d和A和B. A有函数a,b和c,B有函数1,2和3.如果我只使用a和2,有没有什么办法(或者它甚至是合法的??)以某种方式使第三个DLL C只有一个和2?查找dll依赖关系

目的是让我不必引用2(其实更像是20),而仅需要1

这是可能的/法律????我知道微软有一个工具,可以将dll合并成一个工具,但我不知道如何编辑它们或任何东西......任何人都可以解释一下吗?

+0

我不知道它是否合法(如果这些程序集是由Microsoft制作的,您应仔细阅读EULA,或者如果它们是由第三方提供的,则应该使用用户许可证)。 无论如何,你可以做些什么来限制引用的数量,就是创建一个包含所有必要引用的库,例如名为“External/Helper Methods”,并将其用作唯一的存储库。通过这种方式,您可以获得单个引用,而不是20个。 NotaBene:此解决方案可能不适用,例如,如果您使用的方法具有其他类在同一个程序集中定义的其他类的参数。 –

+0

据了解,没有这样的事情。如果这些DLL是你的 - 我相信它们不是 - 你可以合并这些源代码。但是你不能更改别人拥有的代码,并用这些代码“烘烤你自己的蛋糕”......我希望这永远不会成为可能,否则将是一团糟...... – devundef

回答

0

@ Mattb2291:我会建议一种不同的方法。取一个具有函数a和2的C类.A类和B类应该从C继承.C类提供方法a和2的基本实现。

但是对于你需要牢记的某些事情:

首先,从OOP的方面来看,A类和B类与同一问题域有关吗? 第二,如果方法和2访问各自的类中的任何类成员,你必须将它们移动到C类代码,您可能看起来像:

class C{ 
    void a(){ 
    } 

    void 2(){ 
    } 
} 

class A:C{ 
} 

class B:C{ 
} 

这个答案是从有机磷农药的角度。您必须在项目实施之前对其进行验证。