Вы неправильно интерпретируете идею наследования: в основном, когда у вас есть два класса A
и B
, а B
является расширением A
, B
будет наследовать все не-приватные элементы A
;это ничем не отличается, если вы использовали взаимодействие и класс, два интерфейса и т. д.
Поэтому, по моему мнению, вы должны использовать только наследование , если вы реализуете все поля иначе вы как бы побеждаете цель наследования и не следуете объектно-ориентированным принципам.
Что вы можете сделать, однако (не лучший вариант, но это возможно)is use:
thow new NotImplementedException();
Это показывает конечному программисту, что он / она не может использовать это свойство, поскольку его или ее приложение сгенерирует исключение на этапе отладки.
Аналогичновы можете использовать [Obsolete(..., true)]
, что заставит компилятор выдавать ошибку при компиляции; примечание второй параметр установлен на true
. Также , вы можете использовать [Browsable(false)]
, чтобы скрыть его в IntelliSense, но это все еще позволит использовать это свойство.
Вы можете добавить это свойство, которое будет эффективноотключить большинство видов использования вашей собственности.Он будет не на самом деле скрывать его в том смысле, в каком вы хотите, но он показывает, что разработчик игнорирует его.
[Bindable(false)]
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
Что касается фактического сокрытия, я не думаю, чтодля этого есть возможность.