private CalendarSystem(CalendarOrdinal ordinal, string id, string name, YearMonthDayCalculator yearMonthDayCalculator, EraCalculator eraCalculator) { this.Ordinal = ordinal; this.Id = id; this.Name = name; this.YearMonthDayCalculator = yearMonthDayCalculator; this.MinYear = yearMonthDayCalculator.MinYear; this.MaxYear = yearMonthDayCalculator.MaxYear; this.MinDays = yearMonthDayCalculator.GetStartOfYearInDays(MinYear); this.MaxDays = yearMonthDayCalculator.GetStartOfYearInDays(MaxYear + 1) - 1; // We trust the construction code not to mutate the array... this.eraCalculator = eraCalculator; CalendarByOrdinal[(int)ordinal] = this; }