mam takiej sytuacji:Dodawanie setter do własności wirtualnej w C#
public abstract class BaseClass
{
public abstract string MyProp { get; }
}
Teraz dla niektórych klas pochodnych, wartość właściwości jest syntetyzowany wartości, więc nie ma seter:
public class Derived1 : BaseClass
{
public override string MyProp { get { return "no backing store"; } }
}
To działa dobrze. Jednak niektóre z klas pochodnych wymagały bardziej tradycyjnego zaplecza. Jednak, bez względu na to, jak piszę to, jak na automatycznym nieruchomości, lub z wyraźną sklepie podkładu, pojawia się błąd:
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 ': nie można zastąpić, ponieważ «BaseClass.MyProp» robi nie ma dostępnego zestawu akcesorów
Jak mogę to uruchomić?
Będzie działać, jeśli BaseClass był interfejsem, a nie klasą abstrakcyjną, która byłaby odpowiednia dla tego zmyślonego przykładu, ale być może nie w twoim rzeczywistym kodzie. – Mud
Prawda, klasa BaseClass musi być klasą. Zaimplementował metody, których nie pokazałem. –
Możliwy duplikat [Dlaczego nie można zastąpić właściwości tylko pobierającej i dodać setera?] (Https://stackoverflow.com/questions/82437/why-is-it-impossible-to-override-a-gerter -tylko-właściwości-i-dodawania-ustawiania) –