0

私の場合、Castle Windsor を IoC コンテナーとして使用しています。

IoC コンテナーがコンポーネントを作成するときにオブジェクトを作成するのではなく、実行時にコンストラクター引数の 1 つが既存のオブジェクトに設定されるコンポーネントを宣言したいと思います。たとえば、アプリケーションのメイン フォームのインスタンスです。

私は2つのアプローチがあると思います:

  1. 最初にコンテナーを介してオブジェクトを作成し、必要なランタイム値で構成して、後でコンポーネントが Windsor に要求したときにすぐに使用できるようにします。
  2. コンポーネントが値を注入する必要がある場合IFormProviderと 具体的なを作成し、その後フォーム インスタンス (つまり) を要求します。FormProviderIFormProviderformProvider.Form

これについて何か前進はありますか?

4

1 に答える 1

1

これは、 Unityとその Fluent インターフェースで行うのは簡単です。コンテナの RegisterInstance メソッドを呼び出すだけです。これについては、 Setting Up the Unity Container (v1.1 用ですが、1.2 も同様のはずです)に良い議論があります。

Castle Windsor は使用していませんが、明らかに AddComponentInstance が同等です。タイプの既存のインスタンスを Windsor Container に登録できますか を参照してください。

于 2009-10-10T02:37:33.903 に答える