Могут ли веб-элементы управления ASP.NET принимать что-либо в конструкторе?
Я хочу иметь безопасный контроль, но также хочу расширить существующую кнопку или текстовое поле, которое обеспечивает инфраструктура 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 ответа
Да, вот и все. Для этой конкретной ситуации я бы пошел дальше. Если бы MySecureControl имел свои собственные параметры конструктора, вы могли бы изучить внедрение зависимостей, но это означало бы, что вместо использования new вы бы использовали что-то вроде ObjectFactory.GetInstance<> или просто ObjectFactory.BuildUp(this) и использовали внедрение свойств. Не парься:)
Почему MyTextBox просто не реализует ISecureControl?
public class MyTextBox : TextBox, ISecureControl