首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

程序集的依赖关系,该怎么解决

2012-01-14 
程序集的依赖关系有 程序集 A B C情况一:在程序集A 中,编写 类base在程序集B 中,编写 类Sub:base在C中, 编

程序集的依赖关系
有 程序集 A B C

情况一:

  在程序集A 中,编写 类base

  在程序集B 中,编写 类Sub:base

  在C中, 编写 类Application, 其中 实例化Sub

此时, ABC的引用关系为, B引用A, C引用A与B

情况二:

  在程序集A 中,编写 类base

  在程序集B 中,编写 类Sub, 其中 实例化 base

  在C中, 编写 类Application, 其中 实例化Sub

此时, ABC的引用关系为, B引用A, C此时仅需引用B(而无需引用A)

这是,什么原理?

 


[解决办法]
我觉得应该是,因为在第一种情况下,Sub是Base的子类,那么Sub中就会有可能override(当Base中的方法为virtual时),或者implement(当Base中的方法为abstract时) Base中的方法,而这个方法的定义是在Base中的。然而,Application要用Sub,就必须要知道这些方法/属性等的定义,因此Application也要引用A。

第二种情况,由于Base是Sub的一个component,即使Sub中公布了Base对象的某些方法或者属性,那它也只不过是一个wrapper,即仅仅是将调用转发给自己肚子里的Base,这样一来,Application根本不需要知道Base的细节,因为它被Sub封装了。

[解决办法]

探讨
感谢 acqy 与 vrhero的回复

我仍有一点不明

在情况1中,类Base中,并没有 virtual 或 abstract 的方法

我又做了一个实验, 在Sub中我不覆盖任何父类的方法或属性

这时,编译器仍提示我需要应用A

这是什么原理呢?

谢谢

热点排行