【发布时间】:2012-05-28 16:58:30
【问题描述】:
让我们想象一下:
// assembly 01
abstract class Foo
{
abstract void Bar();
}
class AdvancedFoo : Foo
{
override void Bar() { base.Foo(); ... }
}
sealed class SuperiorFoo : AdvancedFoo
{
override sealed void Bar() { base.Foo(); }
}
然后我想从我的 02 asm 中引用该程序集 01 并替换中间基类(并且只有它),所以 SuperiorFoo 的实例是表现得好像他们继承了大会 02 的 AdvancedFoo。
// assembly 02
class AdvancedFoo : Foo
{
override void Bar() { base.Foo(); ... }
}
如果 02 程序集不重写 SuperiorFoo 类声明,有什么方法可以做到这一点?
var supFoo = new SuperiorFoo();
supFoo.Bar(); // This one should call assembly 02's Bar();
【问题讨论】:
-
请使用接口
-
您的代码中没有错字吗?根据您的问题,我猜您的意思是让
SuperiorFoo继承AdvancedFoo而不是Foo。 -
尝试这样做:“密封类SuperiorFoo:AdvancedFoo”
标签: c# class inheritance hide .net-assembly