数据传输对象最佳实践与规范
本文档基于领域驱动设计原则,为模块和应用程序中实现数据传输对象类提供最佳实践。
请确保已先行阅读 数据传输对象 文档。
通用规范
- 应当将DTO定义在应用契约包中。
- 应当在可能且必要时继承预构建的基础DTO类(如
EntityDto<TKey>、CreationAuditedEntityDto<TKey>、AuditedEntityDto<TKey>、FullAuditedEntityDto<TKey>等)。- 应当为聚合根继承可扩展DTO类(如
ExtensibleAuditedEntityDto<TKey>),因为聚合根是可扩展对象,通过这种方式可以将额外属性映射到DTO。
- 应当为聚合根继承可扩展DTO类(如
- 应当为DTO成员定义公共getter和setter。
- 应当对作为服务输入的DTO属性使用数据注解进行验证。
- 不应在DTO中添加任何逻辑,除非必要时实现
IValidatableObject。 - 应当将所有DTO标记为**[Serializable]**,因为它们本身可序列化,且开发者可能希望对其进行二进制序列化。
抠丁客


