Mit so etwas wie dies folgendermaßen aus:Wie Implementieren einer Basisklasse mit einer Methode und dennoch erzwingen die abgeleitete Klasse es zu überschreiben?
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
}
}
las ich einen anderen Posten (abstract method in a virtual class) Hexe war ziemlich wie meine Frage, aber es gibt einen kleinen Unterschied. Ich möchte, dass AAA.ToString() ein Basisverhalten hat und zwingen Sie die abgeleitete Klasse, es zu überschreiben.
Ich weiß, ich könnte so etwas tun (scroll down), aber ich war auf der Suche nach einem richtigen Weg.
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
}
}
Ich könnte auch wahrscheinlich eine IAAA Schnittstelle machen und meine BBB-Klasse bauen wie
public class BBB : AAA, IAAA { ... }
aber sehen nicht richtig zu mir.
Danke, deine Bearbeitung mich wichtig, etwas realisieren gemacht! Selbst wenn ich eine wunderbare Möglichkeit finden würde, um ToString() in der Basisklasse zu definieren und die Überschreibung in der abgeleiteten Klasse zu erzwingen, gibt es einfach keine Möglichkeit, die Überschreibung zu zwingen, ToString() zu verwenden! Ich fand auch diesen Beitrag von einem MVP über zwangsweise Überschreibung: http://social.msdn.microsoft.com/forums/en-US/csharplanguage/thread/c25b6477-b990-4284-abaf-801ddf18207c. Danke nochmal Sir. – Tipx
Froh, zu Diensten zu sein. Dieser Beitrag stammt von Marc Gravell ... er ist auch auf SO bekannt :) –
Wie vergleicht sich das mit der Antwort der OPs? – Armbrat