C# 自举汽车制造商&;通过ConstructureServices使用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.

当通过StructureMap进行配置时,如何告诉AutoMaper 5使用StructureMap构建服务而不产生引导问题,即
新的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