@@ -9,11 +9,17 @@ using Linq2GraphQL.Client.Converters;
99
1010namespace <#= namespaceName #>;
1111
12- public static class <#= classType.Name #>Extentions
12+ /// <summary>
13+ /// Extension methods for <#= classType.Name #> interface type casting
14+ /// </summary>
15+ public static class <#= classType.Name #>Extensions
1316{
14-
1517<# foreach (var field in implementedBy) { #>
16-
18+ /// <summary>
19+ /// Casts <#= classType.Name #> to <#= field #> if the runtime type matches
20+ /// </summary>
21+ /// <param name="value">The interface value to cast</param>
22+ /// <returns><#= field #> instance or null if type doesn't match</returns>
1723 [GraphInterface]
1824 public static <#= field #> <#= field #>(this <#= classType.Name #> value)
1925 {
@@ -23,56 +29,69 @@ public static class <#= classType.Name #>Extentions
2329 }
2430 return null;
2531 }
32+
2633<# } #>
2734}
2835
29-
36+ /// <summary>
37+ /// JSON converter for <#= classType.Name #> interface deserialization
38+ /// </summary>
3039internal class <#= GetInterfaceConverterName() #> : InterfaceJsonConverter<<#= classType.Name #>>
3140{
41+ /// <summary>
42+ /// Deserializes JSON to the appropriate concrete type based on __typename
43+ /// </summary>
44+ /// <param name="typeName">The GraphQL type name from __typename field</param>
45+ /// <param name="json">The JSON object to deserialize</param>
46+ /// <returns>Deserialized instance of the appropriate concrete type</returns>
3247 public override <#= classType.Name #> Deserialize(string typeName, JsonObject json) => typeName switch
3348 {
34- <# foreach (var field in implementedBy) { #>
35- "<#= field #>" => json.Deserialize<<#= field #>>(),
49+ <# foreach (var field in implementedBy) { #>
50+ "<#= field #>" => json.Deserialize<<#= field #>>(),
3651<# } #>
37- _ => json.Deserialize< <#= GetInterfaceConcreteName() #>>()
52+ _ => json.Deserialize<<#= GetInterfaceConcreteName() #>>()
3853 };
3954}
4055
41-
42-
43-
56+ /// <summary>
57+ /// GraphQL interface <#= classType.Name #> with all common fields
58+ /// </summary>
4459[JsonConverter(typeof(<#= GetInterfaceConverterName() #>))]
4560public interface <#= classType.Name #> <#= classType.GetInterfacesString() #>
4661{
47- <#
48- foreach (var field in classType.AllFields)
49- {
50- var coreType = field.CoreType;
51- #>
52- [GraphQLMember("<#= field.Name #>")]
53- public <#= coreType.CSharpTypeDefinition #> <#= field.CSharpName #> { get; set; }
54- <#
55- }
56- #>
57- [GraphQLMember("__typename")]
58- public string __TypeName { get; set; }
62+ <# foreach (var field in classType.AllFields) {
63+ var coreType = field.CoreType; #>
64+ /// <summary>
65+ /// <#= field.Name #> field from GraphQL schema
66+ /// </summary>
67+ [GraphQLMember("<#= field.Name #>")]
68+ <#= coreType.CSharpTypeDefinition #> <#= field.CSharpName #> { get; set; }
5969
70+ <# } #>
71+ /// <summary>
72+ /// GraphQL __typename field for runtime type resolution
73+ /// </summary>
74+ [GraphQLMember("__typename")]
75+ string __TypeName { get; set; }
6076}
6177
78+ /// <summary>
79+ /// Concrete implementation of <#= classType.Name #> interface for fallback deserialization
80+ /// </summary>
6281internal class <#= GetInterfaceConcreteName() #> : <#= classType.Name #>
6382{
64- <#
65- foreach (var field in classType.AllFields)
66- {
67- var coreType = field.CoreType;
68- #>
69- [GraphQLMember("<#= field.Name #>")]
70- public <#= coreType.CSharpTypeDefinition #> <#= field.CSharpName #> { get; set; }
71- <#
72- }
73- #>
83+ <# foreach (var field in classType.AllFields) {
84+ var coreType = field.CoreType; #>
85+ /// <summary>
86+ /// <#= field.Name #> field from GraphQL schema
87+ /// </summary>
88+ [GraphQLMember("<#= field.Name #>")]
89+ <#= coreType.CSharpTypeDefinition #> <#= field.CSharpName #> { get; set; }
7490
91+ <# } #>
92+ /// <summary>
93+ /// GraphQL __typename field for runtime type resolution
94+ /// </summary>
7595 [GraphQLMember("__typename")]
76- public string __TypeName { get; set; }
77-
96+ string __TypeName { get; set; }
7897}
0 commit comments