2009-02-26 6 views
1

安全なコントロールが必要ですが、asp.netフレームワークが提供する既存のボタンやテキストボックスを拡張したいと考えています。だから私のクラス12月には次のようになります。ASP.NET Webコントロールはコンストラクタ内の何かを取り込むことができますか?

public class MyTextBox : System.Web.UI.WebControls.TextBox 
私はそれを行うための戦略パターンのようなものを考えていた

ではなく、私はCTORまたは多分initメソッドまたは何かにISecureControlに渡すことができるか確認してください?

私自身の質問に答えるかもしれません。私はOnInitやOnPreInitなどをオーバーライドしてそこに作成して渡すことができるかもしれないと思うけど、何らかの形でそれを直接渡す方法があるのか​​どうかわからなかったのだろうか?

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

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

もっと良い方法がありますか?またはここで私自身の問題を解決しています...

答えて

1

はい、それはかなりです。その特定の状況のた​​めに、私は上に移動します。 MySecureControlに独自のコンストラクタパラメータがある場合は、依存性注入を調べることができますが、これはnewを使用する代わりにObjectFactory.GetInstance <>またはObjectFactory.BuildUp(this)のようなものを使用し、プロパティ注入を使用することを意味します。 汗をかくことはありません:)

2

なぜMyTextBoxはISecureControlを実装していませんか?

public class MyTextBox : TextBox, ISecureControl 
+0

それは私には役に立ちませんでした。次に、コントロールごとにCanRenderを実装する必要があります。私は、TextBoxがレンダリングできるかどうかをSecureControlに伝えたいだけです。 – rball

関連する問題