@using System.Linq @using AutoRest.Core.Model @inherits AutoRest.Core.Template @Header("// ") @EmptyLine namespace @(Settings.Namespace).@(Settings.ModelsName) { @EmptyLine using System.Reflection; @EmptyLine /// @WrapComment("/// ", "Defines values for " + Model.Name + ".") /// @{var underlyingType = (Model.UnderlyingType?.ClassName == null)? "string" : Model.UnderlyingType.ClassName;} public sealed class @(Model.ClassName+"Converter") : Newtonsoft.Json.JsonConverter { @EmptyLine /// @WrapComment("/// ", "Returns if objectType can be converted to " + Model.Name + " by the converter.") /// public override bool CanConvert(System.Type objectType) { return typeof(@Model.ClassName).GetTypeInfo().IsAssignableFrom(objectType.GetTypeInfo()); } @EmptyLine /// @WrapComment("/// ", "Overrides ReadJson and converts token to " + Model.Name + ".") /// public override object ReadJson(Newtonsoft.Json.JsonReader reader, System.Type objectType, object existingValue, Newtonsoft.Json.JsonSerializer serializer) { if (reader.TokenType == Newtonsoft.Json.JsonToken.Null) { return null; } return (@Model.ClassName)serializer.Deserialize<@underlyingType>(reader); } @EmptyLine /// @WrapComment("/// ", "Overriding WriteJson for " + Model.Name + " for serialization.") /// public override void WriteJson(Newtonsoft.Json.JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer) { writer.WriteValue(value.ToString()); } @EmptyLine } }