6

コンテナーを構成するための新しい流暢なインターフェイスを含む、大量のコードをキャッスル トランクに移動している最中です。このプロジェクトには、保守が困難な巨大な windsorConfig xml ファイルがあるため、この新しい機能を利用し始めようと考えました。他のコンテナー (StructureMap 2.0 など) にもコンテナー構成用の流れるようなインターフェイスが含まれていることを知っているので、この質問はウィンザーに基づいていません。

私の質問は、新しい流暢なスタイルのインターフェイスを使用してコンテナーを構成するために、どの規則/イディオム/パターンを使用していますか?

私が最初に考えたのは、アプリが使用する関連するすべての型をコンテナーにロードする静的メソッド (ContainerConfig.Config など) をどこかに作成することでした。私の心配は、最終的に、このモノリシックな関数が xml 構成ファイルと同じくらい維持できなくなることです (山括弧税を差し引いて)。

2 番目に考えたのは、それを分解して、従属アセンブリごとに慣例により既定の構成をエクスポートすることでした。これは、アセンブリによって内部的に使用される階層に役立つことがわかります。しかし、外部で使用される型の場合、内部で構成を定義する必要がありますか?

考えれば考えるほど疑問が湧いてきました。それについてどう思いますか。

4

4 に答える 4

3

StructureMap 2.5 を詳しく見てみましょう。IOC コンテナーをブートストラップする作業を大幅に削減するいくつかの機能を提供します。これは、構成手法よりも慣例を提供します (以下のブログ エントリを参照)。

Jeremy Miller (StructureMap の作成者) による次の最近のブログ投稿を参照してください。

StructureMap を使用して独自の自動登録規則を作成する

        // Example from the blog post above
        var container = new Container(registry =>
        {
            registry.Scan(x =>
            {
                x.TheCallingAssembly();
                x.With<DefaultConventionScanner>();
            });
        });

StructureMap 2.5.2 がリリースされました

于 2009-01-22T16:40:22.703 に答える
1

Ninjectフレームワークを調べてみることができます。非常にシンプルで流暢なインターフェースと超高速;)XML構成はなく、APIは非常にシンプルです。強くお勧めします

注入する

于 2009-02-15T18:10:28.353 に答える
1

トリッキーな質問 [そして私は IoC の専門家ではありません] ですが、「モノリシックな静的関数」は構成ファイルほど恐ろしいものではないことに注意てください。物事に対して独自の規則を定義し、物事を抽象化しようとすることができます。私は Ninject を使用していますが、Windsor の場合、AllTypesOf 戦略で Register のようなものを使用して短い小さな関数を作成する必要があると思います。

kernel.Register(AllTypesOf<ISomethingProvider>.
    FromAssembly(Assembly.Load("SomeAssembly")));

内部階層が独自のデフォルト構成をエクスポートしていることを知りません。それは少し怖くて逆に思えます。

于 2009-01-19T18:11:20.850 に答える