这里是一个例子:
class Source
{
public int Value_1 { get; set; }
public int Value_2 { get; set; }
public int MissedValue { get; set; }
}
class Destination
{
public int Value_1 { get; set; }
public int Value_2 { get; set; }
}
void Main()
{
var config = new AutoMapper.MapperConfiguration(cfg =>
{
cfg.CreateMap<Source, Destination>()
.ForMember(dst => dst.Value_1, m => m.MapFrom(src => src.Value_1))
.ForMember(dst => dst.Value_2, m => m.MapFrom(src => src.Value_2))
;
});
config.AssertConfigurationIsValid();
}
最后,当我缺少 Source 字段而不仅仅是目标字段时,我需要AssertConfigurationIsValid()引发异常。
此外,如何强制其禁用任何类型和命名转换?如int->字符串,Test.Id-> TestId等。 我需要尽可能限制它。还是我的情况有更好的选择?
UPDATE_0: 好。找到了第一部分的答案。 只需使用
cfg.CreateMap<Source, Destination>(AutoMapper.MemberList.Source)
同时支持这两种验证类型将是很棒的,但这已经是一个好的开始。 现在剩下的是如何删除所有命名约定和类型转换器。