@using System.Linq @using AutoRest.Core.Model @inherits AutoRest.Core.Template @Header("// ") @EmptyLine namespace @(Settings.Namespace).@(Settings.ModelsName) { @EmptyLine /// @WrapComment("/// ", "Defines values for " + Model.Name + ".") /// @if (!Model.OldModelAsString) { @:@(Model.GetObsoleteAttribute()) @:[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] @:public enum @Model.ClassName @:{ var last = Model.Values.Last(); foreach (var value in Model.Values) { if (value.Description != null) { /// @WrapComment("/// ", value.Description) /// } @: [System.Runtime.Serialization.EnumMember(Value = "@value.SerializedName")] if (value == last) { @: @(value.MemberName) } else { @: @(value.MemberName), } } @:} internal static class @(Model.ClassName)EnumExtension { internal static string ToSerializedValue(this @(Model.ClassName)? value) { return value == null ? null : ((@(Model.ClassName))value).ToSerializedValue(); } @EmptyLine internal static string ToSerializedValue(this @(Model.ClassName) value) { switch( value ) { @for (int i = 0; i < Model.Values.Count; i++) { case @(Model.ClassName).@(Model.Values[i].MemberName): return "@Model.Values[i].SerializedName"; } } return null; } @EmptyLine internal static @(Model.ClassName)? Parse@(Model.ClassName)(this string value) { switch( value ) { @for (int i = 0; i < Model.Values.Count; i++) { case "@Model.Values[i].SerializedName": return @(Model.ClassName).@(Model.Values[i].MemberName); } } return null; } } } else { @:@(Model.GetObsoleteAttribute()) @:public static class @Model.ClassName @:{ foreach (var t in Model.Values) { if (t.Description != null) { /// @WrapComment("/// ", t.Description) /// } @: public const string @t.MemberName = "@t.SerializedName"; } @:} } }