はこのようなもの持って:私は別のポスト(abstract method in a virtual class)魔女を読んメソッドを使用して基本クラスを実装し、派生クラスをオーバーライドする方法
public abstract class AAA
{
protected abstract virtual string ToString() // Error
{
// Base Stuff
}
}
public abstract class BBB : AAA
{
public override string ToString()
{
// Use base.ToString();
// More Stuff
}
}
はかなり私の質問のようなものだったが、少し違いがあります。私はAAA.ToString()に基本的な動作を持たせたいと思っていますとは派生クラスにそれを無効にするよう強制します。
私はこのようなことをすることができることを知っています(スクロールダウン)が、私は適切な方法を探していました。
public abstract class AAA
{
public abstract string ToString();
protected string ToString2()
{
// Base Stuff
}
}
public class BBB : AAA
{
public override string ToString()
{
// Use base.ToString2();
// More Stuff
}
}
私はまた、おそらくIAAAインターフェイスを作成し、
public class BBB : AAA, IAAA { ... }
ように私のBBBクラスを構築するが、右に私には見えませんでした。
おかげで、あなたの編集は私が何か重要なことを実感しました!基底クラスでToString()を定義し、派生クラスでオーバーライドを強制する奇跡の方法を見つけたとしても、ToString()を使用するように強制することはできません。私はまた、強制的にオーバーライドについてMVPによってこのポストを見つけました:http://social.msdn.microsoft.com/forums/en-US/csharplanguage/thread/c25b6477-b990-4284-abaf-801ddf18207c。おめでとうございます。 – Tipx
サービスの喜び。その投稿はMarc Gravellです...彼はあまりにもよく知られています:) –
これは、以下に掲載されたOPの回答とどのように比較されますか? – Armbrat