You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6清洁架构中映射方法与DTO的放置位置咨询

清洁架构下的映射逻辑与DTO存放位置问题解答

一、映射方法的位置选择

你的怀疑是对的,映射逻辑如果只是为了适配第三方API的请求格式,不应该放在Core层——因为Core层要保持对外部依赖的独立性,而MyObject是和第三方API绑定的特定类型,Core层依赖它会打破依赖规则。

针对你的选项:

  • 选项a(放在ApiService中):如果映射逻辑简单(比如只是几个属性的赋值),完全可行。毕竟ApiService本身就是负责调用第三方API的,把转换请求格式的逻辑放在一起,符合“单一职责”里的“处理与该外部服务相关的所有逻辑”。
  • 选项c(其他方案):如果映射逻辑复杂,或者后续有多个地方需要把MyEntity转成MyObject,可以在Infrastructure层单独创建一个映射类,比如MyEntityToMyObjectMapper,放在Infrastructure/Mappers目录下。这样既保持了ApiService的简洁,也让映射逻辑可复用、易维护。

简单来说:映射逻辑属于外部服务的适配逻辑,归属于Infrastructure层,要么内嵌在ApiService,要么单独抽成该层内的映射类。

二、MyObject的存放位置

MyObject是带有[JsonProperty]注解的第三方API请求DTO,它属于与外部服务绑定的契约类,应该放在Infrastructure层:

  • 它仅被ApiService使用,放在Infrastructure层能避免污染Core层的纯净性;
  • 这类DTO是外部依赖的一部分,和第三方API的结构强绑定,放在Infrastructure层更符合清洁架构“外部依赖都归属于基础设施层”的原则;
  • 如果后续第三方API的请求结构变化,只需要修改Infrastructure层的代码,不会影响Core层的领域逻辑。

内容的提问来源于stack exchange,提问作者Dario

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 06:01:04