// Code generated by Microsoft (R) AutoRest Code Generator 1.0.1.0
// Changes may cause incorrect behavior and will be lost if the code is
// regenerated.

namespace AutorestClient.Models
{
    using Newtonsoft.Json;
    using System.Collections;
    using System.Collections.Generic;
    using System.Linq;

    /// <summary>
    /// AllTypes
    /// </summary>
    /// <remarks>
    /// AllTypes
    /// </remarks>
    public partial class AllTypes
    {
        /// <summary>
        /// Initializes a new instance of the AllTypes class.
        /// </summary>
        public AllTypes()
        {
          CustomInit();
        }

        /// <summary>
        /// Initializes a new instance of the AllTypes class.
        /// </summary>
        public AllTypes(int id = default(int), int? nullableId = default(int?), int byteProperty = default(int), int shortProperty = default(int), int intProperty = default(int), long longProperty = default(long), int uShortProperty = default(int), int uIntProperty = default(int), long uLongProperty = default(long), double floatProperty = default(double), double doubleProperty = default(double), double decimalProperty = default(double), string stringProperty = default(string), System.DateTime dateTimeProperty = default(System.DateTime), string timeSpanProperty = default(string), string dateTimeOffsetProperty = default(string), string guidProperty = default(string), string charProperty = default(string), KeyValuePairStringString keyValuePairProperty = default(KeyValuePairStringString), System.DateTime? nullableDateTime = default(System.DateTime?), string nullableTimeSpan = default(string), IList<string> stringList = default(IList<string>), IList<string> stringArray = default(IList<string>), IDictionary<string, string> stringMap = default(IDictionary<string, string>), IDictionary<string, string> intStringMap = default(IDictionary<string, string>), SubType subType = default(SubType))
        {
            Id = id;
            NullableId = nullableId;
            ByteProperty = byteProperty;
            ShortProperty = shortProperty;
            IntProperty = intProperty;
            LongProperty = longProperty;
            UShortProperty = uShortProperty;
            UIntProperty = uIntProperty;
            ULongProperty = uLongProperty;
            FloatProperty = floatProperty;
            DoubleProperty = doubleProperty;
            DecimalProperty = decimalProperty;
            StringProperty = stringProperty;
            DateTimeProperty = dateTimeProperty;
            TimeSpanProperty = timeSpanProperty;
            DateTimeOffsetProperty = dateTimeOffsetProperty;
            GuidProperty = guidProperty;
            CharProperty = charProperty;
            KeyValuePairProperty = keyValuePairProperty;
            NullableDateTime = nullableDateTime;
            NullableTimeSpan = nullableTimeSpan;
            StringList = stringList;
            StringArray = stringArray;
            StringMap = stringMap;
            IntStringMap = intStringMap;
            SubType = subType;
            CustomInit();
        }

        /// <summary>
        /// An initialization method that performs custom operations like setting defaults
        /// </summary>
        partial void CustomInit();

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "Id")]
        public int Id { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "NullableId")]
        public int? NullableId { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "ByteProperty")]
        public int ByteProperty { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "ShortProperty")]
        public int ShortProperty { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "IntProperty")]
        public int IntProperty { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "LongProperty")]
        public long LongProperty { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "UShortProperty")]
        public int UShortProperty { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "UIntProperty")]
        public int UIntProperty { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "ULongProperty")]
        public long ULongProperty { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "FloatProperty")]
        public double FloatProperty { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "DoubleProperty")]
        public double DoubleProperty { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "DecimalProperty")]
        public double DecimalProperty { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "StringProperty")]
        public string StringProperty { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "DateTimeProperty")]
        public System.DateTime DateTimeProperty { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "TimeSpanProperty")]
        public string TimeSpanProperty { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "DateTimeOffsetProperty")]
        public string DateTimeOffsetProperty { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "GuidProperty")]
        public string GuidProperty { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "CharProperty")]
        public string CharProperty { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "KeyValuePairProperty")]
        public KeyValuePairStringString KeyValuePairProperty { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "NullableDateTime")]
        public System.DateTime? NullableDateTime { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "NullableTimeSpan")]
        public string NullableTimeSpan { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "StringList")]
        public IList<string> StringList { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "StringArray")]
        public IList<string> StringArray { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "StringMap")]
        public IDictionary<string, string> StringMap { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "IntStringMap")]
        public IDictionary<string, string> IntStringMap { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "SubType")]
        public SubType SubType { get; set; }

    }
}
