【发布时间】:2019-01-10 13:35:31
【问题描述】:
是否可以设置某种全局配置,当映射对象的某些属性具有相同名称但具有不同类型时,会导致映射或验证过程失败?
来源/目的地类型
public class UserData1
{
public int Id { get; set; }
}
public class UserData2
{
public string Id { get; set; }
}
映射配置
Mapper.Initialize(cfg =>
{
cfg.CreateMap<UserData1, UserData2>();
});
预期行为
当映射属性的类型不同时,AssertConfigurationIsValid 或 Map 应该触发某种验证异常。
实际行为
int 属性无一例外地映射到字符串。
复制步骤
// Passes OK
Mapper.Configuration.AssertConfigurationIsValid();
// Mapping is successful
var user2 = Mapper.Map<UserData2>(new UserData1 { Id = 156 });
【问题讨论】:
-
您能否包含完整的示例而不是链接。链接将来可能无法使用。
-
您可以通过扩展点添加自定义验证。见here。
-
从已关闭的 git 问题中添加了示例。
-
@LucianBargaoanu - 我最初的想法是使用自定义验证器,但它似乎会有更复杂的代码
-
嗯,我不知道。它与验证干净地集成在一起。它有什么复杂之处?
标签: c# .net serialization automapper