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 使用 Scan 自动注册泛型类型

结构图和泛型类型

4

1 回答 1

2

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

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