2

他の場所で正確な答えを見つけることができないという私の最初の質問。

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);
    }

}

Unity コンテナー内のすべてのマップを登録する推奨される 4.2.1 の方法を使用しています。

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()));

しかし、上記を実行すると-

「タイプ マップ構成が見つからないか、マッピングがサポートされていません。」.

私が見逃しているものについてのアイデアはありますか? ObjectFactory、Ninject を使用した他の例は、私がそれらを使用してはならないため、機能していないようです。

4

0 に答える 0