繁体   English   中英

C#Visual Studio需要引用基类dll

[英]C# Visual studio needs reference to base class dll

为什么会出现这个问题?

背景: myClass继承自ABC类,而ABC类继承自BaseClass BaseClass是在不同名称空间中的自定义创建的类,并且包含在不同的DLL程序集中。

问题: VisualStudio希望我添加对BaseClass DLL的引用-否则它将无法编译myClass

  • 为何编译器不使用元数据?
  • 如果我购买了DLL(可能没有源代码)并且供应商使用数百个类来继承该怎么办,为什么我需要添加(并知道)所有这些引用?

谢谢

如果您不提供基类的元数据,它将如何获取? 它不会从基类复制到派生类,也不会存储在派生类的程序集中。

您的供应商方案只是不现实的。 没有人会设计一百个类的类层次结构,更不用说将它们存储在单独的程序集中了。 在最坏的情况下,最高达到六到七个。 使用一个基座组件,有时两个。 任何更深层次的人都无法理解它是如何工作的。

关于您的vendor方案-如果该供应商的库未公开任何其他库中的任何库,并且所有这些库仅在内部使用,则不会被迫引用该供应商库中的所有库。

但是,例如,如果一个库从另一个库(或它的继承者)返回一个类,那么您当然必须引用两者。 只是为了获取有关那些公开类的所有信息。

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

这就像在Web服务器端上询问有关SO的问题,但不告诉任何人您正在使用哪种语言/平台-没有参考框架。

让我们回答您的问题...

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

您需要在项目中包括要构建的所有内容。 这可以通过在项目中实际拥有任何项目的源代码,或通过包含对定义了行为的项目/二进制文件的引用来完成。

元数据不包含有关类中实际逻辑的任何详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM