Dependency injection 将依赖性注入Automapper 4.2地图配置文件

Dependency injection 将依赖性注入Automapper 4.2地图配置文件,dependency-injection,automapper-4,Dependency Injection,Automapper 4,我的第一个问题是,我在别处找不到确切的答案 使用Automapper 4.2.1,Unity 4.01 我正在尝试让Automapper配置文件再次调用我的服务接口,以获取要映射到目标属性的嵌套对象。最终,我宁愿不使用ResolveUsing,但如果它起作用,我也可以 public class HeadlineMap : Profile { private readonly IDeserializeModels _deserialize; public HeadlineMap

我的第一个问题是,我在别处找不到确切的答案

使用Automapper 4.2.1,Unity 4.01

我正在尝试让Automapper配置文件再次调用我的服务接口,以获取要映射到目标属性的嵌套对象。最终,我宁愿不使用ResolveUsing,但如果它起作用,我也可以

 public class HeadlineMap : Profile
{
    private readonly IDeserializeModels _deserialize;

    public HeadlineMap(IDeserializeModels argDeserializeModels)
    {
        _deserialize = argDeserializeModels;
    }

    protected override void Configure()
    {
        CreateMap<LiveSiteHeadline, Headline>().
            ...
            ForMember(t => t.VideoTitle, options => options.MapFrom(f => f.videoTitle)).
            ForMember(t => t.Disclaimer, options => options.ResolveUsing<ResolveDisclaimerReference>().ConstructedBy(()=> new ResolveDisclaimerReference(_deserialize)));
    }
}

public class ResolveDisclaimerReference : ValueResolver<LiveSiteHeadline, Object>
{

    private readonly IDeserializeModels _deserialize;

    public ResolveDisclaimerReference(IDeserializeModels argDeserializeModels)
    {
        _deserialize = argDeserializeModels;
    }

    protected override object ResolveCore(LiveSiteHeadline source)
    {
        return _deserialize.GetResponseObject(source.disclaimer.urlPattern, source.disclaimer.project, source.disclaimer.path);
    }

}
公共类标题图:配置文件
{
私有只读ideserialize模型\u反序列化;
公共标题图(IDeserializeModels argDeserializeModels)
{
_反序列化=argDeserializeModels;
}
受保护的覆盖无效配置()
{
CreateMap()。
...
ForMember(t=>t.VideoTitle,options=>options.MapFrom(f=>f.VideoTitle))。
ForMember(t=>t.Disclaimer,options=>options.ResolveUsing().ConstructedBy(()=>newresolvedisclaimerreference(_反序列化));
}
}
公共类解析免责声明错误引用:ValueResolver
{
私有只读ideserialize模型\u反序列化;
公共解析免责声明错误引用(IDeserializeModels argDeserializeModels)
{
_反序列化=argDeserializeModels;
}
受保护的重写对象ResolveCore(LiveSiteHeadline源)
{
返回_反序列化.GetResponseObject(source.disclaimer.urlPattern、source.disclaimer.project、source.disclaimer.path);
}
}
我使用推荐的4.2.1方法在Unity容器中注册所有地图:

var config = new MapperConfiguration(cfg =>
        {
            foreach (var profile in profiles)
            {
                cfg.AddProfile(profile);
            }
        });

        container.RegisterType<MapperConfiguration>(new ContainerControlledLifetimeManager(),
            new InjectionFactory(c => config))
            .RegisterType<IMapper>(new InjectionFactory(c => c.Resolve<MapperConfiguration>().CreateMapper()));
var config=new-MapperConfiguration(cfg=>
{
foreach(配置文件中的var配置文件)
{
cfg.AddProfile(profile);
}
});
container.RegisterType(新ContainerControlled LifetimeManager(),
新注入工厂(c=>config))
.RegisterType(新的InjectionFactory(c=>c.Resolve().CreateMapper());
但是当我运行上面的程序时-

“缺少类型映射配置或映射不受支持。”

你知道我遗漏了什么吗?其他使用ObjectFactory、Ninject的示例似乎不起作用,因为我一定没有使用它们