【发布时间】:2018-04-10 07:26:00
【问题描述】:
我的数据库对象和域对象之间有一个复杂的映射逻辑。因此,我没有使用任何第三方库,例如 AutoMapper。我想知道什么是更好的代码设计:
选项 #1。将映射器抽象为 IServiceNameMapper 并作为依赖项注入 IServiceName
选项 #2。为数据库对象和域对象编写扩展方法以在它们之间进行转换。
我倾向于选项 #1,因为我得到了很好的关注点分离,其中映射逻辑从核心服务逻辑中抽象出来,并作为依赖项注入到服务中。这也使我能够在将来扩展或更改映射逻辑,而无需更改服务实现。
有什么想法吗?
【问题讨论】:
-
郑重声明,复杂的映射逻辑并不是不使用 AutoMapper 的原因。鉴于 AutoMapper 的所有扩展点,没有任何映射逻辑是 AutoMapper 无法处理的。您可以将 AutoMapper 指向自定义转换器/解析器,以获得真正奇特的东西,并且仍然使用它的一些约定。
-
这个链接可能会给一些想法 - htmlhttps://ramesh-java-design-patterns.blogspot.in/2018/03/converter-pattern.html
标签: c# .net design-patterns architecture