具有多个通用类型的接口的StructureMap自动注册

时间:2012-10-28 19:32:40

标签: c# generics dependency-injection structuremap

我正在寻找一种基于约定的方法来替换我的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();
});

来源:

StructureMap Auto registration for generic types using Scan

Structuremap and generic types

1 个答案:

答案 0 :(得分:2)

您可以在StructureMap中注册开放的泛型类型,如下所示:

For(typeof(IMyFactory<,>)).Use(typeof(GenericMyFactory<,>)));