我已经构建了一个类库项目,它引用了几个dll。在我的类库项目的构造函数中,我使用了一个引用的dll中的一些枚举。在另一个项目中使用我的类库时,是否可以不必添加对我的dll的引用以及我的类库项目在内部引用的引用?
答案 0 :(得分:2)
这取决于内部参考的含义。
如果您的应用程序项目使用类库中的类型A,并且该类不公开来自其他库(第三方)的任何公共类型,则除了包含类型的类库之外,您不需要添加任何引用甲
但是,如果类型A公开某些公共属性,返回类型的方法,或者获取类型的参数,或者类型A的方法是来自某个类型的后代,该类型位于某个其他程序集中,那么您需要引用该其他程序集同样。
因此,如果你的确意味着在内部使用,那么就不必添加多于一个类库的引用。
但是,如果编译器抱怨,那就重要了。
答案 1 :(得分:1)
您只需要引用DLL。您只能参考在装配中使用的内容;程序集是完全自我描述的单个单元,因此不需要引用引用的程序集引用的参考(我在这里重复使用'引用'这个词btw :-)。
想象一下,如果你做了必须这样做 - BCL引用了许多不同的东西,更不用说第三方组件了,想象你需要付出多少努力来获得正确的引用!!
答案 2 :(得分:0)
如果您引用了引用程序集正在公开的任何类型(即使只是它们的成员或键入的实例),那么您还必须包含对该程序集的引用。
答案 3 :(得分:0)
在ctor中使用自己的枚举,并将其翻译为第三方枚举。我相信这会让你的调用者不必参考第三方程序集(当然,它仍然需要在运行时可用,以使你的代码能够工作)。
答案 4 :(得分:0)
我认为lassevk简洁地解释了它,但只是想补充一点,虽然你不需要引用 DLL使用的那些额外程序集(再次假设它们仅在内部使用而不是暴露) ,做仍需要让您的应用程序可以访问它们。也就是说,它们必须是可查找的 - 无论是在应用程序旁边还是在GAC中,否则使用它们的DLL将无法找到它们。
答案 5 :(得分:-1)
我不确定你想做什么,但如果你不想,你不必参考任何集会。你可以使用反射。它通常被视为黑客,不推荐,但有时是必要的。 Here you have an article解释如何。