/// <summary>
 /// Initializes a new instance of the <see cref="EdFiSectionReadable" /> class.
 /// </summary>
 /// <param name="Id">Id (required).</param>
 /// <param name="SectionIdentifier">The local identifier assigned to a section. (required).</param>
 /// <param name="CourseOfferingReference">CourseOfferingReference (required).</param>
 /// <param name="Characteristics">An unordered collection of sectionCharacteristics. Reflects important characteristics of the Section, such as whether or not attendance is taken and the Section is graded..</param>
 /// <param name="InstructionLanguageDescriptor">The primary language of instruction, if omitted English is assumed..</param>
 /// <param name="MediumOfInstructionDescriptor">The media through which teachers provide instruction to students and students and teachers communicate about instructional matters; for example:          Technology-based instruction in classroom          Correspondence instruction          Face-to-face instruction          Virtual/On-line Distance learning          Center-based instruction          ....</param>
 /// <param name="SequenceOfCourse">When a section is part of a sequence of parts for a course, the number of the sequence. If the course has only one part, the value of this section attribute should be 1..</param>
 /// <param name="Etag">A unique system-generated value that identifies the version of the resource..</param>
 /// <param name="Ext">Ext.</param>
 public EdFiSectionReadable(string Id = default(string), string SectionIdentifier = default(string), EdFiCourseOfferingReference CourseOfferingReference = default(EdFiCourseOfferingReference), List <EdFiSectionCharacteristicReadable> Characteristics = default(List <EdFiSectionCharacteristicReadable>), string InstructionLanguageDescriptor = default(string), string MediumOfInstructionDescriptor = default(string), int?SequenceOfCourse = default(int?), string Etag = default(string), SectionExtensionsReadable Ext = default(SectionExtensionsReadable))
 {
     // to ensure "Id" is required (not null)
     if (Id == null)
     {
         throw new InvalidDataException("Id is a required property for EdFiSectionReadable and cannot be null");
     }
     else
     {
         this.Id = Id;
     }
     // to ensure "SectionIdentifier" is required (not null)
     if (SectionIdentifier == null)
     {
         throw new InvalidDataException("SectionIdentifier is a required property for EdFiSectionReadable and cannot be null");
     }
     else
     {
         this.SectionIdentifier = SectionIdentifier;
     }
     // to ensure "CourseOfferingReference" is required (not null)
     if (CourseOfferingReference == null)
     {
         throw new InvalidDataException("CourseOfferingReference is a required property for EdFiSectionReadable and cannot be null");
     }
     else
     {
         this.CourseOfferingReference = CourseOfferingReference;
     }
     this.Characteristics = Characteristics;
     this.InstructionLanguageDescriptor = InstructionLanguageDescriptor;
     this.MediumOfInstructionDescriptor = MediumOfInstructionDescriptor;
     this.SequenceOfCourse = SequenceOfCourse;
     this.Etag             = Etag;
     this.Ext = Ext;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="EdFiSectionReadable" /> class.
 /// </summary>
 /// <param name="id">id.</param>
 /// <param name="sectionIdentifier">The local identifier assigned to a section. (required).</param>
 /// <param name="courseOfferingReference">courseOfferingReference (required).</param>
 /// <param name="characteristics">An unordered collection of sectionCharacteristics. Reflects important characteristics of the Section, such as whether or not attendance is taken and the Section is graded..</param>
 /// <param name="classPeriods">An unordered collection of sectionClassPeriods. The class period during which the Section meets..</param>
 /// <param name="instructionLanguageDescriptor">The primary language of instruction, if omitted English is assumed..</param>
 /// <param name="mediumOfInstructionDescriptor">The media through which teachers provide instruction to students and students and teachers communicate about instructional matters; for example:         Technology-based instruction in classroom         Correspondence instruction         Face-to-face instruction         Virtual/On-line Distance learning         Center-based instruction         ....</param>
 /// <param name="sequenceOfCourse">When a section is part of a sequence of parts for a course, the number of the sequence. If the course has only one part, the value of this section attribute should be 1..</param>
 /// <param name="etag">A unique system-generated value that identifies the version of the resource..</param>
 /// <param name="ext">ext.</param>
 public EdFiSectionReadable(string id = default(string), string sectionIdentifier = default(string), EdFiCourseOfferingReference courseOfferingReference = default(EdFiCourseOfferingReference), List <EdFiSectionCharacteristicReadable> characteristics = default(List <EdFiSectionCharacteristicReadable>), List <EdFiSectionClassPeriodReadable> classPeriods = default(List <EdFiSectionClassPeriodReadable>), string instructionLanguageDescriptor = default(string), string mediumOfInstructionDescriptor = default(string), int?sequenceOfCourse = default(int?), string etag = default(string), SectionExtensionsReadable ext = default(SectionExtensionsReadable))
 {
     // to ensure "sectionIdentifier" is required (not null)
     if (sectionIdentifier == null)
     {
         throw new InvalidDataException("sectionIdentifier is a required property for EdFiSectionReadable and cannot be null");
     }
     else
     {
         this.SectionIdentifier = sectionIdentifier;
     }
     // to ensure "courseOfferingReference" is required (not null)
     if (courseOfferingReference == null)
     {
         throw new InvalidDataException("courseOfferingReference is a required property for EdFiSectionReadable and cannot be null");
     }
     else
     {
         this.CourseOfferingReference = courseOfferingReference;
     }
     this.Id = id;
     this.Characteristics = characteristics;
     this.ClassPeriods    = classPeriods;
     this.InstructionLanguageDescriptor = instructionLanguageDescriptor;
     this.MediumOfInstructionDescriptor = mediumOfInstructionDescriptor;
     this.SequenceOfCourse = sequenceOfCourse;
     this.Etag             = etag;
     this.Ext = ext;
 }