最近、Ninject 1.0 を使用する比較的大きなコントロール ライブラリを Ninject 2.0 に更新して、1.0 で発生したいくつかの問題を解決する必要がありました。アップデートはうまくいき、Ninject 2.0 の方がはるかに速いと思います。
ただし、将来この問題を回避するために、フィールドとプロパティを注入するための独自のインターフェイスを作成しました (これは、現在の Web アプリケーション内で使用したい IOC コンテナーのメソッドを本質的に呼び出します)。これで、私のコントロール ライブラリは特定の IOC コンテナーから独立し、将来その領域での変更が高速化されます。
私は他の誰かが同じことをしたのだろうかと思っていましたか?
達成したことに満足していますが、理想的には更新したいと思います。私のコントロールでは、これらの注入されたフィールドを頻繁に保護されたものとして作成し、そのコントロールのコンストラクターに設定します。
IBlogService _blogService = null;
IEmailService _emailService = null;
public Templates_BlogTemplate()
{
Inject(ref _blogService);
Inject(ref _emailService);
}
上記の問題は、実際にプロパティを設定するには、すべてのオブジェクトで「ref」を使用する必要があり、プロパティでそれを直接使用できないことです。
私はこれらの線に沿って何かをしたいのですが、それが可能だとは思いません。
IBlogService _blogService = null;
IEmailService _emailService = null;
public Templates_BlogTemplate()
{
Inject(_blogService, _emailService);
}
コードをすっきりさせる方法や、よりクリーンな方法で動作させる方法について何かアイデアを持っている人はいますか? また、属性を避けたいので、開発者はコントロール内の特定のポイントで変数を挿入することを決定する必要があります。
すべての考えや感情は大歓迎です。
ありがとう