Вы можете использовать пользовательский атрибут [Browsable(false)]
, чтобы свойство не появлялось в редакторе свойств WinForms:
[Browsable(false)]
public new PropertyType PropertyName
{
get { return base.PropertyName; }
set { base.PropertyName = value; }
}
Однако это заставит свойство все еще работать, оно просто не появится вдизайнер форм.Компилятор с радостью примет это.Если вы хотите, чтобы свойство фактически перестало работать, выведите исключения:
[Browsable(false)]
public new PropertyType PropertyName
{
get { throw new InvalidOperationException("This property cannot be used with this control."); }
set { throw new InvalidOperationException("This property cannot be used with this control."); }
}
Конечно, компилятор все равно все равно с радостью примет его, но он будет выдан во время выполнения.Однако даже в этом случае клиентский программист может по-прежнему обращаться к «исходному» свойству путем приведения к базовому типу, то есть вместо
myControl.PropertyName
они могут записать
((BaseControlType) myControl).PropertyName
, и этовсе еще работают.Вы ничего не можете с этим поделать (кроме производных от другого базового класса).