私はいくつかのasp.netカスタムサーバーコントロールを作成しており、コントロールが必要とする依存関係を注入する方法に関するベストプラクティスを探しています.
これを行う方法を決定する際に考慮している要素がいくつかあります
。1) マークアップを介してこの依存関係を注入するのはどれほど簡単か
2) コード ビハインドを介してこの依存関係を挿入するのはどれほど簡単でしょうか。
3) この注入は、コントロールのライフ サイクルのできるだけ早い段階で行う必要があります。できれば、コントロールのすべての依存関係を OnInit() で使用できるようにする必要があります。
これらの要因に基づいて、私がこれを行うことを考えることができる唯一の方法は、依存関係に完全な品質タイプを持つコントロールに文字列プロパティを持たせることです。コントロールが初期化されると、その型をロードして、必要な処理を実行できます。
例:
public class MyControl : CompositeControl
{
public string RepositoryType { get; set; }
protected IRepository Repository { get; set; }
protected override void OnInit()
{
EnsureChildControls();
}
protected override void CreateChildControls()
{
if (!ChildControlsCreated)
{
Repository = ComponentFactory.Instanciate(RepositoryType);
}
}
}
私はいつもこの種の状況に遭遇し、他の誰かが依存関係を注入するために別の/より良い/異なるものを見つけたのではないかと思っていました。
ありがとう :)