鉴于
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;} }
由于隐式配置,这将破坏我的映射。隐式配置隐式地创建A
和B
之间的关系。重构算法无法识别这种关系,从而产生中断。
什么地图制作者解决了这个问题?
答案 0 :(得分:0)
使用接口interface ABcommon { string Name {get;set;} }
,A和B类实现它。重命名将起作用。
答案 1 :(得分:0)
在AutoMapper中,假设您已经处理了映射中的所有属性(通过映射或明确忽略它们),Mapper.AssertConfigurationIsValid();
是管理此问题的方法。
正如documentation所说:
执行此代码会产生AutoMapperConfigurationException,并带有描述性消息。 AutoMapper会检查以确保每个Destination类型成员在源类型上都有相应的类型成员。
因此,在重构了类之后,将不会定义映射,并且测试将失败。
如果您没有进行任何测试,可以将其置于单元测试或启动代码中。