A、B、Cの3つのクラスからなる継承チェーンがあります。ここでAとBは抽象であり、CはBの具体的な実装です。C#2つ以上の派生クラスの下位継承チェーンをオーバーライドする
私は私がしようとすると、それは拾わないと常に用途んばかりのクラスCに上書きした場合、私は具象クラスC.
に上書きしたい基本抽象クラスA、Foo()
上の仮想メソッドを持っていますデフォルトの基底クラスの実装ですが、B & Cの両方でオーバーライドすると、仮想メソッドの実装はB.Foo()
しか使用されません。
「オーバーライド」以外のB.Foo()で何かを宣言する必要がありますか?
明らかにこれらは私のクラスの簡略化バージョンですが、ここに私のメソッド宣言です:
abstract class A {
protected virtual string Foo() {
return "A";
}
}
abstract class B : A {
protected override string Foo() {
return "B";
}
}
class C : B {
protected override string Foo() {
return "C";
}
}
のようなものを持っているでしょうが、あなたは、簡略化のテストを試してみましたあなたのクラスのバージョン? –
どのようにあなたはFooに電話していますか?クラスCの()に?あなたのサンプルを使って再現しようとしましたが、できませんでした。 – Jason
私は他のエラーのためにこの同じ問題の問題を抱えていました。それらが修正され、私が再構築されると、エラーは消え去った。 – Danielson