使用映射库防止重构错误

时间:2016-07-08 15:26:54

标签: c# automapper objectmapper object-object-mapping

鉴于

class A { string Name {get;set;} }
class B { string Name {get;set;} }

然后我使用automapper在A和B之间进行翻译。之后,我将A.Name重命名为A.MyName

class A { string MyName {get;set;} }
class B { string Name {get;set;} }

由于隐式配置,这将破坏我的映射。隐式配置隐式地创建AB之间的关系。重构算法无法识别这种关系,从而产生中断。

什么地图制作者解决了这个问题?

2 个答案:

答案 0 :(得分:0)

使用接口interface ABcommon { string Name {get;set;} },A和B类实现它。重命名将起作用。

答案 1 :(得分:0)

在AutoMapper中,假设您已经处理了映射中的所有属性(通过映射或明确忽略它们),Mapper.AssertConfigurationIsValid();是管理此问题的方法。

正如documentation所说:

  

执行此代码会产生AutoMapperConfigurationException,并带有描述性消息。 AutoMapper会检查以确保每个Destination类型成员在源类型上都有相应的类型成员。

因此,在重构了类之后,将不会定义映射,并且测试将失败。

如果您没有进行任何测试,可以将其置于单元测试或启动代码中。