Время для теоретического вопроса, на который я только что натолкнулся.
Следующий код действителен и компилируется:
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 # позволяет мне частично переопределять свойство TestProperty
auto в дочернем элементе, когда это ведет к частично непредсказуемому поведению? Есть ли практическое применение?
Мне разрешено устанавливать значение TestProperty с помощью родительского установщика (я проверил генерируемый IL, и установщик все еще устанавливает объект поддержки в родительском классе), даже если значение недоступно для публики.