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, string name, string description, オーナ owner, IEnumerable<カレンダー共有> sharedWith)
 {
     this.Tenant = tenant;
     this.CalendarId = calendarId;
     this.Name = name;
     this.Description = description;
     this.Owner = owner;
     this.SharedWith = sharedWith;
 }
 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.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<参加者>());
 }