【发布时间】:2020-04-15 13:37:06
【问题描述】:
我们正在使用洋葱架构实现一个 aspnetcore Web api 应用程序。我有以下戒指:
- 域
- 应用
- 基础设施
- 依赖解析器
到目前为止,我们已经设法将所有第三方实现保留在基础设施层,同时在我们需要该功能的较低环中插入通用接口。
但是,我们现在必须开始使用 AutoMapper,这就是我对如何实现它感到有点困惑的地方。在我们的应用程序中,我们需要映射器的最低环是应用程序环。这是包含所有 DTO 的环。在我看来,如果我们坚持这种架构,AutoMapper 的实现应该在基础设施层,然后我们可以注入它的 IMapper 接口,或者用更通用的接口包装该接口(只包含几个 Map(SourceT src, TargetT trg) 方法),进入内环。到目前为止一切都很好。当我想到映射配置时,困惑就来了。由于没有通用的方法来设置这个映射(CreateMap()),它似乎应该在基础设施层,但是,从逻辑上讲,如果我向应用程序环添加另一个 DTO,为什么我必须去基础设施层为它创建映射。配置似乎应该在应用程序环上,但在这种情况下,我将不得不依赖 Automapper。
有人对如何解决这个问题有任何建议,还是我看错了?
【问题讨论】:
标签: .net asp.net-core automapper onion-architecture