public カレンダーエントリー(
            テナント tenant,
            カレンダーId calendarId,
            カレンダーエントリーId calendarEntryId,
            string description,
            string location,
            オーナ owner,
            データレンジ timeSpan,
            リピート repetition,
            アラーム alarm,
            IEnumerable<参加者> invitees = null)
        {
            AssertionConcern.AssertArgumentNotNull(tenant, "The tenant must be provided.");
            AssertionConcern.AssertArgumentNotNull(calendarId, "The calendar id must be provided.");
            AssertionConcern.AssertArgumentNotNull(calendarEntryId, "The calendar entry id must be provided.");
            AssertionConcern.AssertArgumentNotEmpty(description, "The description must be provided.");
            AssertionConcern.AssertArgumentNotEmpty(location, "The location must be provided.");
            AssertionConcern.AssertArgumentNotNull(owner, "The owner must be provided.");
            AssertionConcern.AssertArgumentNotNull(timeSpan, "The time span must be provided.");
            AssertionConcern.AssertArgumentNotNull(repetition, "The repetition must be provided.");
            AssertionConcern.AssertArgumentNotNull(alarm, "The alarm must be provided.");

            if (repetition.Repeats == リピートタイプ.DoesNotRepeat)
                repetition = リピート.DoesNotRepeat(timeSpan.Ends);

            AssertTimeSpans(repetition, timeSpan);

            Apply(new カレンダーエントリースケジュール時(tenant, calendarId, calendarEntryId, description, location, owner, timeSpan, repetition, alarm, invitees));
        }
 public カレンダーエントリー再スケジュール時(
     テナント tenant,
     カレンダーId calendarId,
     カレンダーエントリーId calendarEntryId,
     データレンジ timeSpan,
     リピート repetition,
     アラーム alarm)
 {
     this.Tenant = tenant;
     this.CalendarId = calendarId;
     this.CalendarEntryId = calendarEntryId;
     this.TimeSpan = timeSpan;
     this.Repetition = repetition;
     this.Alarm = alarm;
 }
 public カレンダーエントリースケジュール時(
     テナント tenant, 
     カレンダーId calendarId, 
     カレンダーエントリーId calendarEntryId, 
     string description, 
     string location, 
     オーナ owner, 
     データレンジ timeSpan, 
     リピート repetition,
     アラーム alarm,
     IEnumerable<参加者> invitees)
 {
     this.Tenant = tenant;
     this.CalendarId = calendarId;
     this.CalendarEntryId = calendarEntryId;
     this.Description = description;
     this.Location = location;
     this.Owner = owner;
     this.TimeSpan = timeSpan;
     this.Repetition = repetition;
     this.Alarm = alarm;
     this.Invitees = invitees;
 }
 void When(カレンダーエントリー再スケジュール時 e)
 {
     this.timeSpan = e.TimeSpan;
     this.repetition = e.Repetition;
     this.alarm = e.Alarm;
 }
 void When(カレンダーエントリースケジュール時 e)
 {
     this.tenant = e.Tenant;
     this.calendarId = e.CalendarId;
     this.calendarEntryId = e.CalendarEntryId;
     this.description = e.Description;
     this.location = e.Location;
     this.owner = e.Owner;
     this.timeSpan = e.TimeSpan;
     this.repetition = e.Repetition;
     this.alarm = e.Alarm;
     this.invitees = new HashSet<参加者>(e.Invitees ?? Enumerable.Empty<参加者>());
 }
 void AssertTimeSpans(リピート repetition, データレンジ timeSpan)
 {
     if (repetition.Repeats == リピートタイプ.DoesNotRepeat)
     {
         AssertionConcern.AssertArgumentEquals(repetition.Ends, timeSpan.Ends, "Non-repeating entry must end with time span end.");
     }
     else
     {
         AssertionConcern.AssertArgumentFalse(timeSpan.Ends > repetition.Ends, "Time span must end when or before repetition ends.");
     }
 }
        public void Reschedule(string description, string location, データレンジ timeSpan, リピート repetition, アラーム alarm)
        {
            AssertionConcern.AssertArgumentNotNull(timeSpan, "The time span must be provided.");
            AssertionConcern.AssertArgumentNotNull(repetition, "The repetition must be provided.");
            AssertionConcern.AssertArgumentNotNull(alarm, "The alarm must be provided.");

            if (repetition.Repeats == リピートタイプ.DoesNotRepeat)
                repetition = リピート.DoesNotRepeat(timeSpan.Ends);

            AssertTimeSpans(repetition, timeSpan);

            ChangeDescription(description);
            Relocate(location);

            Apply(new カレンダーエントリー再スケジュール時(this.tenant, this.calendarId, this.calendarEntryId, timeSpan, repetition, alarm));
        }