IFoo
インターフェイスといくつかのメンバーがあるとしましょう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
。私は 2 つの試行を書きました。使用方法はインターフェイスと同じです。
var foo = new Foo();
AFoo afoo = foo;
foo.Member; // gets int
afoo.Member; // gets string