0

给定

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

然后我使用 automapper 在 A 和 B 之间进行转换。后来,我重命名A.NameA.MyName

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

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

什么映射器解决了这个问题?

4

2 回答 2

1

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

正如文档所说:

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

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

如果您没有任何测试,您可以将其放入单元测试或启动代码中。

于 2016-07-08T17:01:11.623 回答
0

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

于 2016-07-08T15:39:54.190 回答