Существует базовый класс (черный ящик; я не могу его изменить), из которого я наследую. В моем производном классе я больше не хочу разрешать пользователям использовать свойство, вместо этого у меня есть публичная функция, которую можно использовать вместо этого. Я не буду вдаваться в детали того, почему (это не имеет значения), но вот свойство, которое я пытаюсь скрыть:
public ComboBoxItemCollection Items { get; }
Я пробовал это, но это не сработало:
private new ComboBoxItemCollection Items { get; set; }
Я также попробовал это, однако компилятор говорит, что мне не разрешено делать оба средства доступа закрытыми:
public new ComboBoxItemCollection Items { private get; private set; }
Как мне правильно сделать это? Обратите внимание, что я не полагаю, что это полное решение для безопасности, очевидно, с помощью средств приведения к базовому классу они все еще могут вызывать это свойство. Это просто означает, что пользователю предлагается ошибка времени компиляции, которая помогает ему понять, что он не может использовать это свойство, и вместо этого ему следует использовать новую функцию в производном классе.
EDIT
Благодаря ответам в этой теме я нашел следующее решение:
[Obsolete( "This property is obsolete. Please use MRUIdComboBox.AddItem() instead.", true )]
public new ComboBoxItemCollection Items
{
get
{
throw new NotSupportedException( "This property is not supported. Please use MRUIdComboBox.AddItem() instead." );
}
}