SO や本や記事で DTO について多くのことを読んだことがありますが、それが正しいかどうかはわかりません。
私たちのプロジェクトでは DTO を使用しているため、それらはほとんどドメイン オブジェクトのプロパティにすぎません。そのため、複雑な DTO 構造が必要です。相互に拡張するいくつかのクラス、コンポジション、集約などがあります。
質問はより一般的です。
別の dto から dto を継承すること、または別の dto で dto を参照することは正しいですか?
SO や本や記事で DTO について多くのことを読んだことがありますが、それが正しいかどうかはわかりません。
私たちのプロジェクトでは DTO を使用しているため、それらはほとんどドメイン オブジェクトのプロパティにすぎません。そのため、複雑な DTO 構造が必要です。相互に拡張するいくつかのクラス、コンポジション、集約などがあります。
質問はより一般的です。
別の dto から dto を継承すること、または別の dto で dto を参照することは正しいですか?
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; }
}
DTO は単純なダムオブジェクトであることを忘れないでください。つまり、(独自のデータを取得/設定する以外に) 動作がありません。アーキテクチャの観点から標準クラス/オブジェクトに適用されるのと同じルールが DTO に適用されるため、可能であれば同じ原則に従わない理由はありません。