私はデータ転送オブジェクトを使用している状況にあり、私は物事を過度に設計または複雑化していると考え始めています...
私が正しいか間違っているかはわかりません。
EditSchoolyearDTO 内のすべてのプロパティは、クライアント側の UI で WeekType AB が選択されている場合にのみ必要です。
WeekType A のみが選択されている場合は、A プロパティで十分です。
AB ケースでは、SchoolWeekADTO と SchoolWeekBDTO を作成します。
DTO 構造をクライアントとサーバー間の json インターフェイスと見なすと、A または AB データが必要なときに DTO 構造が表現されません。これは私には気分が悪いです。
とりわけ、私のサーバー API は固定タイプであるため、ある時点で A-DTO を使用して投稿を送信し、別の時点で AB-DTO を送信することはできません。
あなたならどうしますか?
public class EditSchoolyearDTO
{
public string Name { get; set; }
public DateTime EndDate { get; set; }
public WeekType StartWeek { get; set; }
public enum WeekType : int
{
A = 0,
AB = 1,
}
public int UserId { get; set; }
public SchoolWeekADTO SchoolWeekA { get; set; }
public SchoolWeekBDTO SchoolWeekB { get; set; }
// When WeektType is A then only SchoolWeekA is or its A-properties are needed
// SchoolyWeekADTO
//public int MaxPeriodPerWeekA { get; set; }
//public IEnumerable<int> VisibleWeekDayIndexA;
//public DayOfWeek FirstDayOfWeekA { get; set; }
// SchoolWeekBDTO
//public int WeeklyRotation { get; set; }
//public DayOfWeek FirstDayOfWeekB { get; set; }
//public IEnumerable<int> VisibleWeekDayIndexB;
//public int MaxPeriodPerWeekB { get; set; }
}