为什么我会遇到这个问题?
后台: myClass
继承自ABC
继承的班级BaseClass
。
BaseClass
是一个自定义创建的类,位于不同的命名空间中,并包含在不同的DLL程序集中。
问题:VisualStudio希望我添加对BaseClass
DLL的引用 - 否则它将无法编译myClass
。
由于
答案 0 :(得分:3)
如果您不提供基类的元数据,它怎么能获得它?它不会从基类复制到派生类并存储在派生类的程序集中。
您的供应商方案不太现实。没有人设计深度为100个类的类层次结构,更不用说将它们中的每一个存储在单独的程序集中。在最坏的情况下,最高可达到六或七。有一个底座组件,有时两个。任何更深层次的人都无法理解它是如何工作的。
答案 1 :(得分:2)
关于您的vendor
场景 - 如果该库没有从其他库中暴露任何内容,并且所有这些库仅在内部使用,则不会强制您引用供应商库中的所有库。
但是,如果一个库例如从另一个库(或它的继承者)返回一个类,那么你当然必须引用它们。只是为了获得有关这些暴露类的所有信息。
答案 2 :(得分:2)
如果未引用BaseClass,您的程序将如何知道它及其定义?它应该从哪里获取元数据,如果它没有引用它?
就像在SO上询问一个与Web服务器端相关的问题,但没有告诉任何人你正在使用什么语言/平台 - 没有参考框架。
答案 3 :(得分:1)
让我们回答你的问题......
为了编译MyClass的代码,它需要知道Class做了什么。为了知道Class做了什么,它需要看看BaseClass做了什么 - 它就像一个链。
您需要在项目中包含您正在构建的任何内容。这可以通过实际拥有项目中任何内容的源,或者通过包含对定义行为的项目/二进制文件的引用来完成。
元数据不包含有关类中实际逻辑的任何详细信息。