internal Appointment( Doctor doctor, Client client, AppointmentDate appointmentDate, OfficeRoom officeRoom) { Guard.AgainstNullObject <InvalidDoctorException>(doctor, nameof(doctor)); Guard.AgainstNullObject <InvalidClientException>(client, nameof(client)); Guard.AgainstNullObject <InvalidAppointmentDateException>(appointmentDate, nameof(appointmentDate)); Guard.AgainstNullObject <InvalidOfficeRoomException>(officeRoom, nameof(officeRoom)); if (officeRoom.OfficeRoomType == OfficeRoomType.SurgeryRoom && doctor.DoctorType.Value != 2) { throw new InvalidDoctorException("Doctor: surgery room requires specialist"); } this.Doctor = doctor; this.Client = client; this.AppointmentDate = appointmentDate; this.OfficeRoom = officeRoom; }