Skip to content

Latest commit

 

History

History
13 lines (10 loc) · 1.03 KB

Data-Transfer-Objects.md

File metadata and controls

13 lines (10 loc) · 1.03 KB

Data Transfer Objects Best Practices & Conventions

  • Do define DTOs in the application contracts package.
  • Do inherit from the pre-built base DTO classes where possible and necessary (like EntityDto<TKey>, CreationAuditedEntityDto<TKey>, AuditedEntityDto<TKey>, FullAuditedEntityDto<TKey> and so on).
    • Do inherit from the extensible DTO classes for the aggregate roots (like ExtensibleAuditedEntityDto<TKey>), because aggregate roots are extensible objects and extra properties are mapped to DTOs in this way.
  • Do define DTO members with public getter and setter.
  • Do use data annotations for validation on the properties of DTOs those are inputs of the service.
  • Do not add any logic into DTOs except implementing IValidatableObject when necessary.
  • Do mark all DTOs as [Serializable] since they are already serializable and developers may want to binary serialize them.

See Also