Установка свойства, скрытого интерфейсом элемента управления - PullRequest
1 голос
/ 18 мая 2011

Я пытаюсь установить поле идентификатора объекта System.Web.UI.Control.Элемент управления реализует интерфейс IChartControl, который не имеет свойства ID.Я хотел бы получить элемент управления как IChartControl и установить его поле идентификатора.

Должен ли я сделать это?:

IChartControl chartControl = foo.GetChartControl();
(chartControl as Control).ID = foo.GetID();
chartControl.Bar();

или было бы одинаково правильно добавить новое свойство в IChartControlс именем 'ID', поэтому, когда я устанавливаю поле идентификатора, оно устанавливает поле идентификатора элемента управления.

Ответы [ 2 ]

2 голосов
/ 18 мая 2011

Вам необходимо привести объект к типу, в котором есть элемент, который вы хотите установить, как в примере кода.

Добавление свойства ID в IChartControl будет работать, ноделайте это только в том случае, если это имеет смысл в контексте этого интерфейса.Это действительно позволит вам установить свойство ID без необходимости приведения.

До тех пор, пока ID в интерфейсе и в Control совпадают, у вас все будет хорошо.Проблемы могут возникнуть, если вы попытаетесь использовать явные реализации интерфейса .

1 голос
/ 18 мая 2011

Вы должны добавить поле идентификатора только к IChartControl, если считаете, что все реализации IChartControl должны поддерживать получение значения идентификатора. Если это так, то добавление имеет смысл. Если нет, то оператор as в порядке (хотя и рискованно, поскольку GetChartControl() гарантирует только объект, который может иметь или не иметь идентификатор, а может быть или не быть элементом управления.)

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