Краткий ответ: Ну ... вы не можете!
Длинный ответ:
Вы можете скрыть реализацию BoardSize
от базового класса, используя new
:
class B : A
{
public new int BoardSize
{
get{return 100;}
}
}
Это сделает следующий код недействительным:
B b = new B();
b.BoardSize = 55;
Но это только усугубит ситуацию!
Действителен следующий код:
A a = new B();
a.BoardSize = 55;
Console.WriteLine(a.BoardSize);
Console.WriteLine(((B)a).BoardSize);
и напечатано
55
100
Вывод:
Вы можете использовать new
для достижения своей цели, но это создаст серьезные проблемы в вашем коде.
ЕслиВы не можете изменить A
, и B
необходимо получить из A
, затем используйте этот код:
class B : A
{
public override int BoardSize
{
get{return 100;}
set{throw new NotSupportedException();}
}
}
Это соответствует .NET Framework.Например, ReadOnlyCollection
выдает это исключение при вызове Add
(после приведения его к ICollection<T>
).