/// <summary>
 /// Initializes a new instance of the <see cref="EdFiStaffSectionAssociationReadable" /> class.
 /// </summary>
 /// <param name="Id">Id (required).</param>
 /// <param name="SectionReference">SectionReference (required).</param>
 /// <param name="StaffReference">StaffReference (required).</param>
 /// <param name="ClassroomPositionDescriptor">The type of position the Staff member holds in the specific class/section; for example:          Teacher of Record, Assistant Teacher, Support Teacher, Substitute Teacher... (required).</param>
 /// <param name="Etag">A unique system-generated value that identifies the version of the resource..</param>
 public EdFiStaffSectionAssociationReadable(string Id = default(string), EdFiSectionReference SectionReference = default(EdFiSectionReference), EdFiStaffReference StaffReference = default(EdFiStaffReference), string ClassroomPositionDescriptor = default(string), string Etag = default(string))
 {
     // to ensure "Id" is required (not null)
     if (Id == null)
     {
         throw new InvalidDataException("Id is a required property for EdFiStaffSectionAssociationReadable and cannot be null");
     }
     else
     {
         this.Id = Id;
     }
     // to ensure "SectionReference" is required (not null)
     if (SectionReference == null)
     {
         throw new InvalidDataException("SectionReference is a required property for EdFiStaffSectionAssociationReadable and cannot be null");
     }
     else
     {
         this.SectionReference = SectionReference;
     }
     // to ensure "StaffReference" is required (not null)
     if (StaffReference == null)
     {
         throw new InvalidDataException("StaffReference is a required property for EdFiStaffSectionAssociationReadable and cannot be null");
     }
     else
     {
         this.StaffReference = StaffReference;
     }
     // to ensure "ClassroomPositionDescriptor" is required (not null)
     if (ClassroomPositionDescriptor == null)
     {
         throw new InvalidDataException("ClassroomPositionDescriptor is a required property for EdFiStaffSectionAssociationReadable and cannot be null");
     }
     else
     {
         this.ClassroomPositionDescriptor = ClassroomPositionDescriptor;
     }
     this.Etag = Etag;
 }