Pode controles web ASP.NET tomar em qualquer coisa no construtor?
-
09-09-2019 - |
Pergunta
Eu quero ter um controle seguro, mas também deseja estender o botão existente ou caixa de texto do quadro asp.net fornece. Assim, a minha classe dezembro seria algo parecido com:
public class MyTextBox : System.Web.UI.WebControls.TextBox
Eu estava pensando em algo como um padrão de estratégia para fazê-lo, mas não sei como eu poderia passar em um ISecureControl no ctor ou talvez um método init ou algo assim?
Eu poderia estar respondendo a minha própria pergunta. Eu acho que eu poderia ser capaz de substituir um OnInit ou OnPreInit ou algo assim e criar e passá-lo lá, mas não tinha certeza se há uma maneira de simplesmente passá-lo diretamente em alguma forma na criação?
override OnInit()
{
secureControl = new MySecureControl();
}
override OnRender()
{
if(secureControl.CanRender)
base.OnRender();
}
Existe uma maneira melhor? ou estou resolvendo meu problema aqui ...
Solução
Sim, isso é muito bonito isso. Por essa situação específica, gostaria de seguir em frente. Se MySecureControl tinha seus próprios parâmetros do construtor, você pode olhar para injeção de dependência, mas isso significaria em vez de usar novo você usaria algo como ObjectFactory.GetInstance <> ou apenas ObjectFactory.BuildUp (this) e injeção de uso da propriedade. Não se preocupe:)
Outras dicas
porque não MyTextBox apenas implementar ISecureControl?
public class MyTextBox : TextBox, ISecureControl