/// <summary>
 /// Validate the object.
 /// </summary>
 /// <exception cref="ValidationException">
 /// Thrown if validation fails
 /// </exception>
 public virtual void Validate()
 {
     if (DeleteRetentionPolicy != null)
     {
         DeleteRetentionPolicy.Validate();
     }
     if (ChangeFeed != null)
     {
         ChangeFeed.Validate();
     }
     if (RestorePolicy != null)
     {
         RestorePolicy.Validate();
     }
     if (ContainerDeleteRetentionPolicy != null)
     {
         ContainerDeleteRetentionPolicy.Validate();
     }
     if (LastAccessTimeTrackingPolicy != null)
     {
         LastAccessTimeTrackingPolicy.Validate();
     }
     if (Sku != null)
     {
         Sku.Validate();
     }
 }
 /// <summary>
 /// Initializes a new instance of the BlobServiceProperties class.
 /// </summary>
 /// <param name="id">Fully qualified resource ID for the resource. Ex -
 /// /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}</param>
 /// <param name="name">The name of the resource</param>
 /// <param name="type">The type of the resource. E.g.
 /// "Microsoft.Compute/virtualMachines" or
 /// "Microsoft.Storage/storageAccounts"</param>
 /// <param name="cors">Specifies CORS rules for the Blob service. You
 /// can include up to five CorsRule elements in the request. If no
 /// CorsRule elements are included in the request body, all CORS rules
 /// will be deleted, and CORS will be disabled for the Blob
 /// service.</param>
 /// <param name="defaultServiceVersion">DefaultServiceVersion indicates
 /// the default version to use for requests to the Blob service if an
 /// incoming request’s version is not specified. Possible values
 /// include version 2008-10-27 and all more recent versions.</param>
 /// <param name="deleteRetentionPolicy">The blob service properties for
 /// blob soft delete.</param>
 /// <param name="isVersioningEnabled">Versioning is enabled if set to
 /// true.</param>
 /// <param name="automaticSnapshotPolicyEnabled">Deprecated in favor of
 /// isVersioningEnabled property.</param>
 /// <param name="changeFeed">The blob service properties for change
 /// feed events.</param>
 /// <param name="restorePolicy">The blob service properties for blob
 /// restore policy.</param>
 /// <param name="containerDeleteRetentionPolicy">The blob service
 /// properties for container soft delete.</param>
 /// <param name="lastAccessTimeTrackingPolicy">The blob service
 /// property to configure last access time based tracking
 /// policy.</param>
 /// <param name="sku">Sku name and tier.</param>
 public BlobServiceProperties(string id = default(string), string name = default(string), string type = default(string), CorsRules cors = default(CorsRules), string defaultServiceVersion = default(string), DeleteRetentionPolicy deleteRetentionPolicy = default(DeleteRetentionPolicy), bool?isVersioningEnabled = default(bool?), bool?automaticSnapshotPolicyEnabled = default(bool?), ChangeFeed changeFeed = default(ChangeFeed), RestorePolicyProperties restorePolicy = default(RestorePolicyProperties), DeleteRetentionPolicy containerDeleteRetentionPolicy = default(DeleteRetentionPolicy), LastAccessTimeTrackingPolicy lastAccessTimeTrackingPolicy = default(LastAccessTimeTrackingPolicy), Sku sku = default(Sku))
     : base(id, name, type)
 {
     Cors = cors;
     DefaultServiceVersion          = defaultServiceVersion;
     DeleteRetentionPolicy          = deleteRetentionPolicy;
     IsVersioningEnabled            = isVersioningEnabled;
     AutomaticSnapshotPolicyEnabled = automaticSnapshotPolicyEnabled;
     ChangeFeed    = changeFeed;
     RestorePolicy = restorePolicy;
     ContainerDeleteRetentionPolicy = containerDeleteRetentionPolicy;
     LastAccessTimeTrackingPolicy   = lastAccessTimeTrackingPolicy;
     Sku = sku;
     CustomInit();
 }