FirelyTeam / firely-net-sdk

The official Firely .NET SDK for HL7 FHIR
Other
827 stars 344 forks source link

Turn Matches and IsExactly into `EqualityComparer<Base>` #2928

Open ewoutkramer opened 2 hours ago

ewoutkramer commented 2 hours ago

We can rewrite Matches and IsExactly in terms of GetElementPairs(), or even IReadOnlyDictionary. This could be done as in-place replacements for the current methods (who then don't need to be virtual anymore), but we could also turn them into a ExactEqualityComparer<T> and PatternEqualityComparer<T> to align with the normal .NET strategy of implementing System.Collections.Generic.EqualityComparer<Base> for these kind of purposes.

Again, as a guide to the user, we can leave the old methods in, throw not implemented and add an Obsolete with a message to indicate you should use the comparers.

ewoutkramer commented 2 hours ago

Since using GetElementPairs() is slower than the current generated approach, it's also possible to use a SourceGenerator to generate these comparers, so the users does not have to hand-write them. Maybe a nice follow up project ;-)