﻿//----------------------
// <auto-generated>
// </auto-generated>
//----------------------


namespace MyNamespace
{
    #pragma warning disable // Disable all warnings

    public partial class MyCustomTypePerson
    {

        [Newtonsoft.Json.JsonProperty("FirstName", Required = Newtonsoft.Json.Required.Always)]
        [System.ComponentModel.DataAnnotations.Required]
        public string MyCustomFirstName { get; set; }

        [Newtonsoft.Json.JsonProperty("lastName", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
        public string MyCustomLastName { get; set; }

        [Newtonsoft.Json.JsonProperty("Birthday", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
        public System.DateTimeOffset MyCustomBirthday { get; set; }

        [Newtonsoft.Json.JsonProperty("TimeSpan", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
        public System.TimeSpan MyCustomTimeSpan { get; set; }

        [Newtonsoft.Json.JsonProperty("TimeSpanOrNull", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
        public System.TimeSpan? MyCustomTimeSpanOrNull { get; set; }

        [Newtonsoft.Json.JsonProperty("Gender", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
        public MyCustomTypeGender MyCustomGender { get; set; }

        [Newtonsoft.Json.JsonProperty("GenderOrNull", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
        public MyCustomTypeGender? MyCustomGenderOrNull { get; set; }

        [Newtonsoft.Json.JsonProperty("Address", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
        public MyCustomTypeAddress MyCustomAddress { get; set; }

        [Newtonsoft.Json.JsonProperty("AddressOrNull", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
        public MyCustomTypeAddress MyCustomAddressOrNull { get; set; }

        [Newtonsoft.Json.JsonProperty("Array", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
        public System.Collections.Generic.ICollection<string> MyCustomArray { get; set; }

        [Newtonsoft.Json.JsonProperty("Dictionary", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
        public System.Collections.Generic.IDictionary<string, int> MyCustomDictionary { get; set; }

    }

    public enum MyCustomTypeGender
    {

        Male = 0,


        Female = 1,


    }

    public partial class MyCustomTypeAddress
    {

        [Newtonsoft.Json.JsonProperty("Street", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
        public string MyCustomStreet { get; set; }

        [Newtonsoft.Json.JsonProperty("City", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
        public string MyCustomCity { get; set; }

    }

    public partial class MyCustomTypeTeacher : MyCustomTypePerson
    {

        [Newtonsoft.Json.JsonProperty("Class", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
        public string MyCustomClass { get; set; }

    }
}