在AutoMapper中,您可以将相同的值解析器应用于多个成员

Twi*_*ted 8 c# automapper

我有一些映射代码如下

Mapper.CreateMap<CalculationQueryResult, CalculationViewModel>()
       .ForMember(poco => poco.NomineeFee, 
                   opt => opt.ResolveUsing<FormattedCurrencyInt>()
         .FromMember(m => m.NomineeFee))

       .ForMember(poco => poco.TotalContributions, 
                   opt => opt.ResolveUsing<FormattedCurrencyInt>()
         .FromMember(m => m.TotalContributions))

       .ForMember(poco => poco.EquityInjection, 
                   opt => opt.ResolveUsing<FormattedCurrencyInt>()
         .FromMember(m => m.EquityInjection))

  // ... SNIP Lots more members mapped with Formatted Currency Resolver
Run Code Online (Sandbox Code Playgroud)

如您所见,我使用相同的解析器映射多个成员,以将整数转换为格式化的货币字符串.我正在为绝大多数人这样做,但不是我的poco课上的所有成员.

如果我不需要继续重复这些类型,那么所有这些成员都将使用基于约定的映射进行映射.它为大量的任务编写了大量的代码.

是否有任何方法可以覆盖将int转换为单个映射的字符串的默认行为,然后执行自定义.ForMembers,我想要一些不同的东西.比如这样:

Mapper.CreateMap<CalculationQueryResult, CalculationViewModel>()
            .SetDefault<int,string>(opt => opt.ResolveUsing<FormattedCurrencyInt>())
            .ForMember(poco => poco.Count, x=>x.MapFrom(s => s.Count.ToString()));
Run Code Online (Sandbox Code Playgroud)

Twi*_*ted 0

您不能按照所描述的方式将相同的值解析器应用于多个成员。

正如 Georg Patscheider 所建议的,它可以覆盖所有映射的从 int 到 string 的默认映射,但这可能会产生比原始问题更严重的副作用。

您必须逐行写出映射。