Могут ли веб-элементы управления ASP.NET принимать что-либо в конструкторе? - PullRequest
1 голос
/ 26 февраля 2009

Я хочу иметь безопасный контроль, но также хочу расширить существующую кнопку или текстовое поле, которое предоставляет инфраструктура asp.net. Так что мой класс dec будет выглядеть примерно так:

public class MyTextBox : System.Web.UI.WebControls.TextBox

Я думал, что-то вроде шаблона стратегии для этого, но не уверен, как я мог бы передать ISecureControl в ctor или, возможно, метод init или что-то еще?

Возможно, я отвечаю на свой вопрос. Я думаю, что я мог бы переопределить OnInit или OnPreInit или что-то еще, создать и передать его туда, но не был уверен, есть ли способ просто напрямую передать его при создании?

override OnInit()
{
  secureControl = new MySecureControl();
}

override OnRender()
{
  if(secureControl.CanRender)
    base.OnRender();
}

Есть ли лучший способ? или я здесь решаю свою проблему ...

Ответы [ 2 ]

2 голосов
/ 26 февраля 2009

Почему MyTextBox просто не реализует ISecureControl?

public class MyTextBox : TextBox, ISecureControl
1 голос
/ 26 февраля 2009

да, вот и все. Для этой конкретной ситуации я бы пошел дальше. Если бы MySecureControl имел свои собственные параметры конструктора, вы могли бы изучить внедрение зависимостей, но это означало бы, что вместо использования new вы бы использовали что-то вроде ObjectFactory.GetInstance <> или просто ObjectFactory.BuildUp (this) и использовали внедрение свойств. Не парься :))

...