Ich habe Hinzufügen einer Situation wie folgt aus:einen Setter auf ein virtuelles Objekt in C#
public abstract class BaseClass
{
public abstract string MyProp { get; }
}
Jetzt für einige der abgeleiteten Klassen, ist die Eigenschaften Wert ein synthetisiertes Werte, so gibt es keine Setzer:
public class Derived1 : BaseClass
{
public override string MyProp { get { return "no backing store"; } }
}
Dies funktioniert gut. Einige der abgeleiteten Klassen erforderten jedoch einen traditionelleren Hintergrundspeicher. Aber egal, wie ich es schreiben, wie die automatischen Eigenschaft oder mit einem expliziten Zusatzspeicher, erhalte ich eine Fehlermeldung:
public class Derived2 : BaseClass
{
public override string MyProp { get; private set;}
}
public class Derived3 : BaseClass
{
private string myProp;
public override string MyProp
{
get { return myProp;}
private set { myProp = value;}
}
}
Derived2.MyProp.set ': kann nicht außer Kraft setzen, weil ‚BaseClass.MyProp‘ tut hat einen überwindbaren set-Accessor nicht
Wie bekomme ich diese Arbeit ??
Es würde funktionieren, wenn Baseclass eine Schnittstelle eher als eine abstrakte Klasse ist, die für dieses erfundene Beispiel geeignet wäre, aber vielleicht nicht in Ihrem aktuellen Code. – Mud
True, BaseClass muss eine Klasse sein. Es hat Methoden implementiert, die ich nicht gezeigt habe. –
Mögliche Duplikat [Warum ist es unmöglich, einen Getter geschützte Eigenschaft außer Kraft zu setzen und einen Setter hinzufügen?] (Https://stackoverflow.com/questions/82437/why-is-it-impossible-to-override-a-getter -only-property-and-add-a-setter) –