BlobServiceProperties
Storage Service Properties. 
                using Azure.Core;
using Azure.Storage.Common;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Linq;
namespace Azure.Storage.Blobs.Models
{
    [CodeGenModel("StorageServiceProperties")]
    public class BlobServiceProperties : IXmlSerializable
    {
        public BlobAnalyticsLogging Logging { get; set; }
        public BlobMetrics HourMetrics { get; set; }
        public BlobMetrics MinuteMetrics { get; set; }
        public string DefaultServiceVersion { get; set; }
        public BlobRetentionPolicy DeleteRetentionPolicy { get; set; }
        public BlobStaticWebsite StaticWebsite { get; set; }
        public IList<BlobCorsRule> Cors { get; set; }
        internal BlobServiceProperties(BlobAnalyticsLogging logging, BlobMetrics hourMetrics, BlobMetrics minuteMetrics, IList<BlobCorsRule> cors, string defaultServiceVersion, BlobRetentionPolicy deleteRetentionPolicy, BlobStaticWebsite staticWebsite)
        {
            Logging = logging;
            HourMetrics = hourMetrics;
            MinuteMetrics = minuteMetrics;
            Cors = cors;
            DefaultServiceVersion = defaultServiceVersion;
            DeleteRetentionPolicy = deleteRetentionPolicy;
            StaticWebsite = staticWebsite;
        }
        void IXmlSerializable.Write(XmlWriter writer, string nameHint)
        {
            writer.WriteStartElement(nameHint ?? "StorageServiceProperties");
            if (Optional.IsDefined(Logging))
                writer.WriteObjectValue(Logging, "Logging");
            if (Optional.IsDefined(HourMetrics))
                writer.WriteObjectValue(HourMetrics, "HourMetrics");
            if (Optional.IsDefined(MinuteMetrics))
                writer.WriteObjectValue(MinuteMetrics, "MinuteMetrics");
            if (Optional.IsDefined(DefaultServiceVersion)) {
                writer.WriteStartElement("DefaultServiceVersion");
                writer.WriteValue(DefaultServiceVersion);
                writer.WriteEndElement();
            }
            if (Optional.IsDefined(DeleteRetentionPolicy))
                writer.WriteObjectValue(DeleteRetentionPolicy, "DeleteRetentionPolicy");
            if (Optional.IsDefined(StaticWebsite))
                writer.WriteObjectValue(StaticWebsite, "StaticWebsite");
            if (Optional.IsCollectionDefined(Cors)) {
                writer.WriteStartElement("Cors");
                foreach (BlobCorsRule cor in Cors) {
                    writer.WriteObjectValue(cor, "CorsRule");
                }
                writer.WriteEndElement();
            }
            writer.WriteEndElement();
        }
        internal static BlobServiceProperties DeserializeBlobServiceProperties(XElement element)
        {
            BlobAnalyticsLogging logging = null;
            BlobMetrics hourMetrics = null;
            BlobMetrics minuteMetrics = null;
            string defaultServiceVersion = null;
            BlobRetentionPolicy deleteRetentionPolicy = null;
            BlobStaticWebsite staticWebsite = null;
            IList<BlobCorsRule> cors = null;
            XElement xElement = element.Element("Logging");
            if (xElement != null)
                logging = BlobAnalyticsLogging.DeserializeBlobAnalyticsLogging(xElement);
            XElement xElement2 = element.Element("HourMetrics");
            if (xElement2 != null)
                hourMetrics = BlobMetrics.DeserializeBlobMetrics(xElement2);
            XElement xElement3 = element.Element("MinuteMetrics");
            if (xElement3 != null)
                minuteMetrics = BlobMetrics.DeserializeBlobMetrics(xElement3);
            XElement xElement4 = element.Element("DefaultServiceVersion");
            if (xElement4 != null)
                defaultServiceVersion = (string)xElement4;
            XElement xElement5 = element.Element("DeleteRetentionPolicy");
            if (xElement5 != null)
                deleteRetentionPolicy = BlobRetentionPolicy.DeserializeBlobRetentionPolicy(xElement5);
            XElement xElement6 = element.Element("StaticWebsite");
            if (xElement6 != null)
                staticWebsite = BlobStaticWebsite.DeserializeBlobStaticWebsite(xElement6);
            XElement xElement7 = element.Element("Cors");
            if (xElement7 != null) {
                List<BlobCorsRule> list = new List<BlobCorsRule>();
                foreach (XElement item in xElement7.Elements("CorsRule")) {
                    list.Add(BlobCorsRule.DeserializeBlobCorsRule(item));
                }
                cors = list;
            }
            return new BlobServiceProperties(logging, hourMetrics, minuteMetrics, cors, defaultServiceVersion, deleteRetentionPolicy, staticWebsite);
        }
        public BlobServiceProperties()
            : this(false)
        {
        }
        internal BlobServiceProperties(bool skipInitialization)
        {
            if (!skipInitialization) {
                Logging = new BlobAnalyticsLogging();
                HourMetrics = new BlobMetrics();
                MinuteMetrics = new BlobMetrics();
                DeleteRetentionPolicy = new BlobRetentionPolicy();
                StaticWebsite = new BlobStaticWebsite();
            }
        }
    }
}