2009-02-26 12 views
1

Ich möchte eine sichere Kontrolle haben, aber auch die vorhandene Schaltfläche oder Textbox, die das asp.net-Framework bietet, erweitern. Also meine Klasse Dezember würde in etwa so aussehen:Können ASP.NET-Websteuerelemente alles im Konstruktor aufnehmen?

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

ich es zu tun so etwas wie ein Strategie-Muster denken, aber nicht sicher, wie ich in einem ISecureControl in die Ctor oder vielleicht eine init-Methode oder etwas passieren könnte?

Ich könnte meine eigene Frage beantworten. Ich denke, ich könnte vielleicht ein OnInit oder OnPreInit oder etwas überschreiben und es dort erstellen und weitergeben, war mir aber nicht sicher, ob es einen Weg gibt, es bei der Erstellung einfach direkt zu übergeben?

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

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

Gibt es einen besseren Weg? oder löse ich mein eigenes Problem hier ...

Antwort

1

ja, das ist es ziemlich viel. Für diese spezielle Situation würde ich weitermachen. Wenn MySecureControl über eigene Konstruktorparameter verfügt, könnten Sie in die Abhängigkeitsinjektion schauen, aber das würde bedeuten, dass Sie anstelle von new etwas wie ObjectFactory.GetInstance <> oder nur ObjectFactory.BuildUp (this) verwenden und Property Injection verwenden. Schwitzen Sie es nicht :)

2

Warum implementiert MyTextBox nicht nur ISecureControl?

public class MyTextBox : TextBox, ISecureControl 
+0

Das würde mir nicht helfen, dann müsste ich einen CanRender pro Steuerelement implementieren. Ich möchte nur ein SecureControl, um meine TextBox zu informieren, ob es rendern kann oder nicht. – rball

Verwandte Themen