@using System @using System.Linq @using AutoRest.Core.Utilities @using AutoRest.CSharp.Azure.Model @using AutoRest.CSharp.Model @using AutoRest.CSharp.vanilla.Templates.Rest.Client @inherits AutoRest.Core.Template @Header("// ") @EmptyLine namespace @Settings.Namespace { using System.Linq; @foreach (var usingString in Model.Usings) { @: using @usingString; } @EmptyLine @if (!string.IsNullOrWhiteSpace(Model.Documentation)) { @:/// @:@WrapComment("/// ", Model.Documentation.EscapeXmlComment()) @:/// } public partial class @Model.Name : Microsoft.Rest.ServiceClient<@Model.Name>, I@(Model.Name), IAzureClient { @(Include(new ServiceClientBodyTemplate(), (CodeModelCs)Model)) /// /// An optional partial-method to perform custom initialization. /// partial void CustomInitialize(); /// /// Initializes client properties. /// private void Initialize() { @foreach (var operation in Model.AllOperations) { @:this.@(operation.NameForProperty) = new @(operation.TypeName)(this); } @if (Model.IsCustomBaseUri) { @:this.BaseUri = "@Model.BaseUrl"; } else { @:this.BaseUri = new System.Uri("@Model.BaseUrl"); } @foreach (var property in Model.Properties.Where(p => p.DefaultValue != null)) { @:this.@(property.Name) = @(property.DefaultValue); } SerializationSettings = new Newtonsoft.Json.JsonSerializerSettings { Formatting = Newtonsoft.Json.Formatting.Indented, DateFormatHandling = Newtonsoft.Json.DateFormatHandling.IsoDateFormat, DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Utc, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore, ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Serialize, ContractResolver = new Microsoft.Rest.Serialization.ReadOnlyJsonContractResolver(), Converters = new System.Collections.Generic.List { new Microsoft.Rest.Serialization.Iso8601TimeSpanConverter() } }; @if (Model.NeedsTransformationConverter) { @:SerializationSettings.Converters.Add(new Microsoft.Rest.Serialization.TransformationJsonConverter()); } DeserializationSettings = new Newtonsoft.Json.JsonSerializerSettings { DateFormatHandling = Newtonsoft.Json.DateFormatHandling.IsoDateFormat, DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Utc, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore, ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Serialize, ContractResolver = new Microsoft.Rest.Serialization.ReadOnlyJsonContractResolver(), Converters = new System.Collections.Generic.List { new Microsoft.Rest.Serialization.Iso8601TimeSpanConverter() } }; @foreach (var polymorphicType in Model.ModelTypes.Where(t => t.IsPolymorphic)) { @:SerializationSettings.Converters.Add(new Microsoft.Rest.Serialization.PolymorphicSerializeJsonConverter<@(polymorphicType.Name)>("@(polymorphicType.PolymorphicDiscriminator)")); @:DeserializationSettings.Converters.Add(new Microsoft.Rest.Serialization.PolymorphicDeserializeJsonConverter<@(polymorphicType.Name)>("@(polymorphicType.PolymorphicDiscriminator)")); } CustomInitialize(); @if (Model.NeedsTransformationConverter) { @:DeserializationSettings.Converters.Add(new Microsoft.Rest.Serialization.TransformationJsonConverter()); } DeserializationSettings.Converters.Add(new Microsoft.Rest.Azure.CloudErrorJsonConverter()); } @foreach (MethodCsa method in Model.Methods.Where(each => each.Group.IsNullOrEmpty())) { if (method.ExcludeFromInterface) { continue; } @:@(Include(DependencyInjection.New(), (MethodCsa)method)) @EmptyLine @: } } }