如果我正确理解 AutoMapper 文档,当没有找到目标成员的源成员/映射时,我应该会失败
Testrepo https://github.com/austinmfb/AutoMapperTests
设置
public class OuterDest
{
public int Value { get; set; }
public int AdditionalValue { get; set; }
public DataClass1 DataClass { get; set; }
public InnerDest Inner { get; set; }
}
public class InnerDest
{
public int OtherValue { get; set; }
}
public class OuterSource
{
public int Value { get; set; }
public InnerSource Inner { get; set; }
}
public class InnerSource
{
public int OtherValue { get; set; }
}
Action<IMapperConfigurationExpression> mapperConfigExpression =
cfg =>
{
//MemberList.Source or Destination do not seem to change result
cfg.CreateMap<OuterSource, OuterDest>()
//.ForMember(d => d.Value, opt => opt.MapFrom(s => s.Value))
;
cfg.CreateMap<InnerSource, InnerDest>();
};
var mapperConfig = new MapperConfiguration(mapperConfigExpression);
测试
var mapped = mapper.Map<OuterDest>(source);
根据文档运行成功,它应该失败......
mapperConfig.AssertConfigurationIsValid(); /* 在异常消息中返回预期的失败成员
OuterSource -> OuterDest(目标成员列表) AutoMapperConsole.TestClasses.Sources.OuterSource -> AutoMapperConsole.TestClasses.Destinations.OuterDest(目标成员列表)
未映射的属性: 附加价值 数据类
*/
预期未映射的成员异常,因为目标类型中存在其他成员,而这些成员不在文档的源代码中。
这是预期的行为。
您应该始终在开发时验证您的配置,并在代码发布时解决所有错误。
Map
不会验证,只有在必须验证时才会失败。