2016-05-24 5 views
1

MapFromラムダの結果がnull/NREをスローすると、別のソースを参照するようにautomapperを設定できますか?私の現在の要件は、私はこれを行うことができました非常に基本的なものです:Automapperのプロパティの優先順位の階層

.ForMember(a=>a.CountryOfRisk, m=>m.MapFrom(a=>(a.CountryOfRisk??a.Issuer.CountryOfRisk).CountryCode)) 

をしかし、実際に私は何をできるようにしたいことは、このようなものである:これは意味します

a=>a.CountryOfRisk, m=>m.MapFrom(a=>a.CountryOfRisk.CountryCode) 
         .Coalesce(a=>a.Issuer.CountryOfRisk.CountryCode)) 

私は出力フィールドを充実した、設定ベースの、読みやすいフォーマット済みのアイテムにすることができます。

答えて

0

このカスタムリゾルバを行うことが可能です:

public class CustomResolver : ValueResolver<Source, string> 
{ 
    protected override string ResolveCore(Source source) 
    { 
     return source.CountryOfRisk ?? source.Issuer.CountryOfRisk; 
    } 
} 

Mapper.Initialize(cfg => 
    cfg.CreateMap<Source, Destination>() 
     .ForMember(dest => dest.CountryOfRisk, opt => opt.ResolveUsing<CustomResolver>()); 

https://github.com/AutoMapper/AutoMapper/wiki/Custom-value-resolvers (?IValueResolver非推奨ValueResolverが動作するはずです)。

+0

ありがとうございました。それはより複雑な項目には便利ですが、私は優先順位を設定し、最初の非null /非例外的な回答を選択できるように、もう少し組み込みのものを探していました。多分、私は怠け者ではなく、自分で構築して提出するべきです! – Stu