我正在寻找一种基于约定的方法来替换我的StructureMap注册表中的以下行:
this.For<IMyFactory<ItemList, int>>().Use(x => x.GetInstance<GenericMyFactory<ItemList, int>>());
澄清
我所追求的是一种自动注册IMyFactory的方法,其方式是使用与接口声明相同的顺序创建具有相同类型的具体实例。我上面声明的方式仅适用于ItemList / int组合 - 我想要的是使用任何类型组合的方法。
我在其他SO帖子上找到了这个方法,当只提供一种类型时,它看起来效果很好,但是当多于一种类型是通用的时候,我似乎无法找到一个可行的方法。以下是我的情况下的编译错误。
this.Scan(x =>
{
x.TheCallingAssembly();
x.AddAllTypesOf(typeof(IMyFactory<>));
x.WithDefaultConventions();
});
来源:
答案 0 :(得分:2)
您可以在StructureMap中注册开放的泛型类型,如下所示:
For(typeof(IMyFactory<,>)).Use(typeof(GenericMyFactory<,>)));