C# 自举汽车制造商&;通过ConstructureServices使用StructureMap
当通过StructureMap进行配置时,如何告诉AutoMaper 5使用StructureMap构建服务而不产生引导问题,即C# 自举汽车制造商&;通过ConstructureServices使用StructureMap,c#,automapper,structuremap,automapper-5,structuremap4,C#,Automapper,Structuremap,Automapper 5,Structuremap4,当通过StructureMap进行配置时,如何告诉AutoMaper 5使用StructureMap构建服务而不产生引导问题,即新的MapperConfiguration(cfg=>cfg.ConstructionServicesUsing(some_IContainer)) 自定义解析程序需要一个服务定位器供AutoMapper使用,但当AutoMapper在StructureMap注册表中初始化时,IContainer尚不存在。StructureMap中已弃用静态ObjectFactory.
新的MapperConfiguration(cfg=>cfg.ConstructionServicesUsing(some_IContainer))
自定义解析程序需要一个服务定位器供AutoMapper使用,但当AutoMapper在StructureMap注册表中初始化时,IContainer
尚不存在。StructureMap中已弃用静态ObjectFactory.Container
,因此我有一个懒惰的ObjectFactory:
public static class ObjectFactory
{
private static readonly Lazy<Container> _containerBuilder =
new Lazy<Container>(defaultContainer, LazyThreadSafetyMode.ExecutionAndPublication);
public static IContainer Container
{
get { return _containerBuilder.Value; }
}
private static Container defaultContainer()
{
return new Container(x =>
{
x.AddRegistry<MyRegistry>(); // AutoMapper is configured here
});
}
}
公共静态类ObjectFactory
{
私有静态只读惰性容器生成器=
新的Lazy(defaultContainer、LazyThreadSafetyMode.ExecutionAndPublication);
公共静态集装箱
{
获取{return\u containerBuilder.Value;}
}
私有静态容器defaultContainer()
{
返回新容器(x=>
{
x、 AddRegistry();//此处配置了自动映射
});
}
}
我无法从AutoMapper配置文件中引用ObjectFactory.Container
,因为我得到了堆栈溢出或“在惰性工厂中引用的值”
在配置AutoMapper之后,是否有方法使用(一些IContainer)来添加
.construct?您可以使用
您注册的MapperConfiguration
可能类似于:
类MyRegistry:Registry
{
公共注册处()
{
For()
.Use(“使用StructureMap上下文解析自动映射服务”,ctx=>
{
返回新的MapperConfiguration(配置=>
{
config.ConstructServicesUsing(type=>ctx.GetInstance(type));
});
});
}
}
这样你就避免了鸡和蛋的问题
警告
我还没有测试过这段代码,我也不熟悉StructureMap