1

StructureMapレジストリの次の行を置き換えるための規則ベースの方法を探しています。

this.For<IMyFactory<ItemList, int>>().Use(x => x.GetInstance<GenericMyFactory<ItemList, int>>());

明確化

私が求めているのは、インターフェイス宣言と同じ順序で同じタイプの具象インスタンスが作成されるようにIMyFactoryを自動登録する方法です。上記で宣言した方法は、ItemList / intの組み合わせに対してのみ機能します。必要なのは、任意の型の組み合わせでそれを行う方法です。

この方法は他のSO投稿でも見つかりました。これは、提供するタイプが1つしかない場合にうまく機能するようですが、複数のタイプが汎用である場合に機能する方法を見つけることができないようです。私の場合、以下はコンパイルエラーを示します。

this.Scan(x =>
{
    x.TheCallingAssembly();
    x.AddAllTypesOf(typeof(IMyFactory<>));
    x.WithDefaultConventions();
});

出典:

スキャンを使用したジェネリック型のStructureMap自動登録

構造マップとジェネリック型

4

1 に答える 1

2

次のように、開いているジェネリック型をStructureMapに登録できます。

For(typeof(IMyFactory<,>)).Use(typeof(GenericMyFactory<,>)));
于 2012-10-29T09:45:44.460 に答える