Время для теоретического вопроса, с которым я только что столкнулся.
Следующий код действителен и компилируется:
public class Parent
{
public virtual object TestProperty { get; set; }
}
public class Child : Parent
{
private string _testValue = "Hello World!";
public override object TestProperty
{
get { return _testValue; }
}
}
public class Consumer
{
Parent p = new Child();
public Consumer(){ p.TestProperty = 3; }
}
Мой вопрос:
Почемупозволяет ли C # частично переопределить свойство auto TestProperty
в дочернем элементе, если оно приводит к частично непредсказуемому поведению? Есть ли практическое применение?
Мне разрешено устанавливать значение TestProperty с помощьюсеттер родителя (я проверил генерируемый IL, и сеттер все еще устанавливает объект поддержки в родительском классе), хотя значение не доступно для публики.