3

私はデータ転送オブジェクトを使用している状況にあり、私は物事を過度に設計または複雑化していると考え始めています...

私が正しいか間違っているかはわかりません。

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; }

    }
4

1 に答える 1