カードを含む「セット」というエンティティがあります。カード全体とその内容 (カード ビュー) を見たいときもあれば、セットに含まれるカードの枚数 (テーブル ビュー) だけを知りたいときもあります。物事を DRY に保つために、次のような複数のコンストラクターで SetDto クラスを再利用することにしました。
public class SetDto
{
public SetDto()
{
Cards = new List<CardDto>();
}
// Called via SetDto(set, "thin")
public SetDto (Set set, string isThin)
{
var setDto = new SetDto()
{
SetId = set.SetId,
Title = set.Title,
Details = set.Details,
Stage = set.Stage,
CardCount = set.Cards.Count
};
return setDto;
}
// Called via SetDto(set)
public SetDto(Set set)
{
SetId = set.SetId;
UserId = set.UserId;
Title = set.Title;
Details = set.Details;
FolderId = set.FolderId;
Stage = set.Stage;
IsArchived = set.IsArchived;
Cards = new List<CardDto>();
foreach (Card card in set.Cards)
{
Cards.Add(new CardDto(card));
}
}
/// property definitions
私は元々、セット用に 2 つの異なる DTO (ThinSetDto と FullSetDto) を持っていましたが、これは面倒でテストが難しいように思えました。上記の解決策は問題ないように見えますか、それとも既知のベストプラクティスに違反していますか? お時間をいただきありがとうございます!