假设您有 interfaceIFoo
和一些 member Member
。实现它的类能够实现来自接口的成员,同时添加具有完全相同名称的“新”成员。
这真的很棒。现在我想拉一些类似的东西,但不是来自接口,而是来自抽象类。我希望与接口类似的行为 - 具有抽象类的实例,将看到原始成员,具有派生类的实例,将看到“新”成员并隐藏原始成员。
我有这样的想法:
abstract class AFoo
(
public abstract string Member { get; }
}
class Foo : AFoo
{
public override string Member { get; } // this is the one coming from AFoo
public new int Member { get; } // does not work (try 1)
string AFoo.Member { get; } // works only with interfaces (try 2)
}
有什么机制允许这样做吗?
更新: 中有 2 个成员Foo
,我刚写了两次尝试。用法与接口相同:
var foo = new Foo();
AFoo afoo = foo;
foo.Member; // gets int
afoo.Member; // gets string