Skip to content

Commit 48ad3c4

Browse files
perf(dotnet): optimize dictionary lookups in model Equals methods (#664)
2 parents e453358 + 2b6bdda commit 48ad3c4

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

config/clients/dotnet/template/modelGeneric.mustache

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,8 @@
317317
return OpenAPIClientUtils.compareLogic.Compare(this, input as {{classname}}).AreEqual;
318318
{{/useCompareNetObjects}}
319319
{{^useCompareNetObjects}}
320-
return this.Equals(input as {{classname}});
320+
if (input == null || input.GetType() != this.GetType()) return false;
321+
return this.Equals(({{classname}})input);
321322
{{/useCompareNetObjects}}
322323
}
323324

@@ -354,7 +355,7 @@
354355
{{/vendorExtensions.x-is-value-type}}this.{{name}}.SequenceEqual(input.{{name}})
355356
){{^-last}} && {{/-last}}{{/isContainer}}{{/vars}}{{^vars}}{{#parent}}base.Equals(input){{/parent}}{{^parent}}false{{/parent}}{{/vars}}{{^isAdditionalPropertiesTrue}};{{/isAdditionalPropertiesTrue}}
356357
{{#isAdditionalPropertiesTrue}}
357-
&& (this.AdditionalProperties.Count == input.AdditionalProperties.Count && this.AdditionalProperties.All(kv => input.AdditionalProperties.ContainsKey(kv.Key) && Equals(kv.Value, input.AdditionalProperties[kv.Key])));
358+
&& (this.AdditionalProperties.Count == input.AdditionalProperties.Count && this.AdditionalProperties.All(kv => input.AdditionalProperties.TryGetValue(kv.Key, out var inputValue) && Equals(kv.Value, inputValue)));
358359
{{/isAdditionalPropertiesTrue}}
359360
{{/useCompareNetObjects}}
360361
}

0 commit comments

Comments
 (0)