2011-03-18 69 views
0

为什么我会遇到这个问题?C#Visual Studio需要引用基类DLL

myClass的从从BaseClass的

继承

VisualStudio的要我加入到BaseClass的DLL的引用,否则将无法编译MyClass的类继承。为什么它不使用元数据?如果我购买了dll并且供应商使用了数百个类来继承,那么为什么我需要知道添加所有这些引用?

感谢

+0

什么是BaseClass?这是你的其他自定义创建的类吗?它是否来自同一个命名空间?或者它是在一个特殊的项目?也许单独组装? – 2011-03-18 23:47:00

+0

这是一个自定义创建的类在不同的命名空间,并包含在不同的dll程序集中 – ejuarez 2011-03-24 16:18:16

回答

3

关于你vendor的情况 - 你不会被迫引用所有来自供应商的库库如果库不公开其他任何库和所有那些库仅在内部使用。

但是,如果一个库例如从另一个库(或它的继承者)返回一个类,那么当然你必须同时引用它们。只是为了获得关于这些暴露类的所有信息。

2

如果未引用BaseClass,那么程序如何知道它及其定义?如果它没有提及它,它应该从哪里获取元数据?

这就像问一个关于SO的Web服务器端相关问题,但不告诉任何人你正在使用什么语言/平台 - 没有参考框架。

+0

如果A依赖于B,而B依赖于C,那么我可以理解A依赖于C.但是如果A引用B,并且B引用C ,为什么我需要告诉Visual Studio有一个REFERENCE C?为什么它不能为我做一个深刻的参考?作为一个选项?某处?如果B被几十个项目所消耗,我必须为它们中的每一个增加对C的引用。 – 2012-07-20 23:04:42

1

让我们来为您解答...

为了编译MyClass的代码,它需要知道什么类一样。为了知道Class做了什么,它需要看看BaseClass做了什么 - 它就像一个链。

您需要在项目中包含任何您正在构建的东西。这可以通过实际为项目中的任何内容创建源代码,或者通过在定义行为的地方包含对项目/二进制文件的引用来完成。

元数据不包含关于类中实际逻辑的任何细节。

2

如果你不提供它,它怎么能得到基类的元数据?它不会从基类复制到派生类并存储在派生类的程序集中。

您的供应商场景是不现实的。没有人设计出百级以上的类层次结构,更不用说将它们中的每一个存储在单独的程序集中。最糟糕的情况是,这个数字在六或七位上升。有一个基座组件,有时两个。任何更深层次的人都无法理解它是如何工作的。

+0

我以为元数据是在创建程序集时创建的,baseclass是在单独的dll程序集中。引用维基百科文章“...元数据描述了在程序集中定义的所有类和类成员,以及当前程序集将从另一个程序集调用的类和类成员。方法的元数据包含方法的完整描述,包括类(以及包含类的程序集),返回类型和所有方法参数......“ – ejuarez 2011-03-24 16:18:51

+0

不确定引用的点可能是什么。维基百科不会编译您的代码。如果您认为它应该以不同的方式工作,请发送到connect.microsoft.com。 – 2011-03-24 16:23:04