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 ...

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top