Skip to content

Commit

Permalink
Avoid capture in GetEqualityStrategy
Browse files Browse the repository at this point in the history
  • Loading branch information
jnyrup committed May 27, 2022
1 parent 6c5db11 commit 72c2e25
Showing 1 changed file with 16 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,21 @@ EqualityStrategy IEquivalencyAssertionOptions.GetEqualityStrategy(Type requested
{
// As the valueFactory parameter captures instance members,
// be aware if the cache must be cleared on mutating the members.
return equalityStrategyCache.GetOrAdd(requestedType, type =>
#pragma warning disable SA1009, SA1111
return equalityStrategyCache.GetOrAdd(requestedType,
#if NET47 || NETSTANDARD2_0
type => Add(type, referenceTypes, valueTypes, compareRecordsByValue, getDefaultEqualityStrategy)
#else
static (Type type, (List<Type> referenceTypes, List<Type> valueTypes, bool compareRecordsByValue,
Func<Type, EqualityStrategy> getDefaultEqualityStrategy) v) =>
Add(type, v.referenceTypes, v.valueTypes, v.compareRecordsByValue, v.getDefaultEqualityStrategy),
(referenceTypes, valueTypes, compareRecordsByValue, getDefaultEqualityStrategy)
#endif
);
#pragma warning restore SA1009, SA1111

static EqualityStrategy Add(Type type, List<Type> referenceTypes, List<Type> valueTypes, bool compareRecordsByValue,
Func<Type, EqualityStrategy> getDefaultEqualityStrategy)
{
EqualityStrategy strategy;

Expand Down Expand Up @@ -219,7 +233,7 @@ EqualityStrategy IEquivalencyAssertionOptions.GetEqualityStrategy(Type requested
}

return strategy;
});
}
}

public ITraceWriter TraceWriter { get; private set; }
Expand Down

0 comments on commit 72c2e25

Please sign in to comment.