Скрытые производные свойства не работают?C # - PullRequest
0 голосов
/ 14 сентября 2011

У меня есть пользовательский элемент управления, назовите его ctrlFoo, который происходит от System.Web.UI.Control.

Когда создается этот пользовательский элемент управления, я вижу все публичные свойства System.Web.UI.Control, которые раздражают в intellisense, поскольку их так много.

Внутри ctrlFoo i 'мы пробовали

private new string SkinID { get; set; }

Но я все еще вижу это свойство в инициализированном экземпляре ctrlFoo.

Может кто-нибудь предложить какие-либо другие предложения?

Ответы [ 3 ]

2 голосов
/ 14 сентября 2011

Вам не хватает точки наследования от Control.Если ctrlFoo действительно является Control, то вам не следует скрывать свойства, которыми обладают Control.Control имеет SkinID, поэтому ctrlFoo также должен иметь SkinID.

Если вам не нравится то, что появляется в Intellisense, измените настройки Intellisense (я никогда никого не слышалпожаловаться на IntelliSense раньше).

0 голосов
/ 14 сентября 2011

Вы не можете скрыть унаследованные свойства.Это нарушило бы принцип подстановки Лискова.

0 голосов
/ 14 сентября 2011

Вы по-прежнему можете видеть его, потому что вы видите System.Web.UI.Control.SkinID, который является открытым.

Вы можете скрыть это свойство, установив модификаторы доступа private для get и set методов доступа, ноБазовое свойство должно быть виртуальным или абстрактным, чтобы быть переопределенным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...