Я пытаюсь предоставить своим пользователям два класса - один только для чтения и один для записи. Р / о будет иметь только геттеры, а записи будут наследоваться и добавлять сеттеры.
У меня сложилось впечатление, что C # должен справиться с этим, но компилятор не согласился.
Почему это не работает? Есть обходные пути?
class A
{
protected int m_val;
public int Val
{
get { return m_val; }
}
}
class B : A
{
public int Val
{
set { m_val = value; }
}
}
class Test
{
static void Main(string[] args)
{
B b = new B();
b.Val++; // <-- WHY DOESN'T THIS WORK?!
}
}
P.S. защищенная переменная в приведенном выше примере является искусственной. Мой класс на самом деле обёртывает некоторые нативные ресурсы, и получение / установка происходит по константному или изменчивому нативному указателю.