复杂的 DTO 结构

hgu*_*yan 3 .net design-patterns domain-driven-design data-transfer-objects

我在 SO 上的书籍和文章中阅读了很多关于 DTO 的内容,但我不确定我是否理解正确。

我们在项目中使用 DTO,因此它们几乎只是域对象的属性。因此,我们需要一个复杂的 DTO 结构。有一些类相互扩展,组合、聚合等。

问题比较笼统。

从另一个 dto 继承一个 dto 或在另一个 dto 中引用一个 dto 是否正确?

Jam*_*mes 5

从另一个 DTO 继承 DTO 是否正确

如果他们有共同的属性,那为什么不呢?

在一个 DTO 中引用另一个 DTO

这绝对没有错,请考虑以下几点:

public class UserDto
{
    public string Id { get; set; }
    public string Username { get; set; }
    public string Email { get; set; }
    public AddressDto Address { get; set; }
}

public class AddressDto
{
    public string AddressLine1 { get; set; }
    public string AddressLine2 { get; set; }
    public string City { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

请记住,DTO 只是愚蠢的对象,即它们没有行为(除了获取/设置自己的数据)。从体系结构的角度来看,适用于 DTO 的规则与适用于标准类/对象的规则相同,因此如果可以的话,没有理由不遵循相同的原则。