@@ -75,54 +75,15 @@ namespace {{Namespace}}
7575{{!# ClientClass}}
7676 public sealed class {{ClassName}} : I{{ClassName}}
7777 {
78- {{ifTemplate 'StringifyEnums' 'true'}}
79- internal interface IStringifiedEnum
80- {
81- string Value { get; }
82- }
83- {{/ifTemplate}}
84-
8578 private static JsonSerializerSettings jsonSettings = new JsonSerializerSettings()
8679 {
8780 Converters =
8881 {
89- {{ifTemplate 'StringifyEnums' 'true'}}
90- new CustomJsonStringifiedEnumConverter(),
91- {{/ifTemplate}}
9282 new Newtonsoft.Json.Converters.StringEnumConverter(camelCaseText: false),
9383 {{ > jsonConverters }}
9484 }
9585 };
9686
97- {{ifTemplate 'StringifyEnums' 'true'}}
98- internal class CustomJsonStringifiedEnumConverter : JsonConverter
99- {
100- public override bool CanConvert(Type objectType)
101- {
102- return typeof(IStringifiedEnum).IsAssignableFrom(objectType);
103- }
104-
105- public override bool CanRead => false;
106-
107- public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
108- {
109- throw new NotImplementedException();
110- }
111-
112- public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
113- {
114- if (value is IStringifiedEnum v)
115- {
116- writer.WriteValue(v.Value);
117- }
118- else
119- {
120- writer.WriteNull();
121- }
122- }
123- }
124- {{/ifTemplate}}
125-
12687 private string SerializeBody(GraphQLRequest request)
12788 {
12889 return JsonConvert.SerializeObject(request, jsonSettings);
@@ -209,7 +170,8 @@ namespace {{Namespace}}
209170{{!# Enum}}
210171
211172 {{ifTemplate 'StringifyEnums' 'true'}}
212- public class {{pascalCase Name}} : IStringifiedEnum
173+ [JsonConverter(typeof({{pascalCase Name}}.CustomJsonStringifiedEnumConverter))]
174+ public class {{pascalCase Name}}
213175 {
214176 static Dictionary<string, {{pascalCase Name}}> lookup = new Dictionary<string, {{pascalCase Name}}>();
215177
@@ -249,6 +211,33 @@ namespace {{Namespace}}
249211 {{#each Values}}
250212 public static readonly {{pascalCase ../Name}} {{pascalCase .}} = Create("{{.}}", true);
251213 {{/each}}
214+
215+ internal class CustomJsonStringifiedEnumConverter : JsonConverter
216+ {
217+ public override bool CanConvert(Type objectType)
218+ {
219+ return typeof({{pascalCase Name}}).IsAssignableFrom(objectType);
220+ }
221+
222+ public override bool CanRead => false;
223+
224+ public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
225+ {
226+ throw new NotImplementedException();
227+ }
228+
229+ public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
230+ {
231+ if (value is {{pascalCase Name}} v)
232+ {
233+ writer.WriteValue(v.Value);
234+ }
235+ else
236+ {
237+ writer.WriteNull();
238+ }
239+ }
240+ }
252241 }
253242 {{else}}
254243 [JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]
0 commit comments