diff --git a/src/EFCore/ChangeTracking/GeometryValueComparer.cs b/src/EFCore/ChangeTracking/GeometryValueComparer.cs index bd09ee0879a..29594894c2e 100644 --- a/src/EFCore/ChangeTracking/GeometryValueComparer.cs +++ b/src/EFCore/ChangeTracking/GeometryValueComparer.cs @@ -11,7 +11,11 @@ namespace Microsoft.EntityFrameworkCore.ChangeTracking; /// /// See EF Core value comparers for more information and examples. /// -public class GeometryValueComparer<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods)] TGeometry> +public class GeometryValueComparer + <[DynamicallyAccessedMembers( + DynamicallyAccessedMemberTypes.PublicMethods + | DynamicallyAccessedMemberTypes.PublicProperties)] + TGeometry> : ValueComparer { /// diff --git a/src/EFCore/ChangeTracking/Internal/ConvertingValueComparer.cs b/src/EFCore/ChangeTracking/Internal/ConvertingValueComparer.cs index f5b58f0e265..d02486cc887 100644 --- a/src/EFCore/ChangeTracking/Internal/ConvertingValueComparer.cs +++ b/src/EFCore/ChangeTracking/Internal/ConvertingValueComparer.cs @@ -3,6 +3,7 @@ namespace Microsoft.EntityFrameworkCore.ChangeTracking.Internal; +using System.Diagnostics.CodeAnalysis; using static Expression; /// @@ -15,7 +16,11 @@ namespace Microsoft.EntityFrameworkCore.ChangeTracking.Internal; /// any release. You should only use it directly in your code with extreme caution and knowing that /// doing so can result in application failures when updating to a new Entity Framework Core release. /// -public class ConvertingValueComparer : ValueComparer, IInfrastructure +public class ConvertingValueComparer + <[DynamicallyAccessedMembers( + DynamicallyAccessedMemberTypes.PublicMethods + | DynamicallyAccessedMemberTypes.PublicProperties)] + TTo, TFrom> : ValueComparer, IInfrastructure { private readonly ValueComparer _valueComparer; diff --git a/src/EFCore/ChangeTracking/Internal/NullableValueComparer`.cs b/src/EFCore/ChangeTracking/Internal/NullableValueComparer`.cs index 061f7b09c06..eaaefe13a1a 100644 --- a/src/EFCore/ChangeTracking/Internal/NullableValueComparer`.cs +++ b/src/EFCore/ChangeTracking/Internal/NullableValueComparer`.cs @@ -1,6 +1,8 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Diagnostics.CodeAnalysis; + namespace Microsoft.EntityFrameworkCore.ChangeTracking.Internal; /// @@ -9,7 +11,11 @@ namespace Microsoft.EntityFrameworkCore.ChangeTracking.Internal; /// any release. You should only use it directly in your code with extreme caution and knowing that /// doing so can result in application failures when updating to a new Entity Framework Core release. /// -public class NullableValueComparer : ValueComparer, IInfrastructure +public class NullableValueComparer + <[DynamicallyAccessedMembers( + DynamicallyAccessedMemberTypes.PublicMethods + | DynamicallyAccessedMemberTypes.PublicProperties)] + T> : ValueComparer, IInfrastructure where T : struct { private static readonly PropertyInfo _hasValueProperty = typeof(T?).GetProperty("HasValue")!; diff --git a/src/EFCore/ChangeTracking/ValueComparer.cs b/src/EFCore/ChangeTracking/ValueComparer.cs index d85d00e8145..a7e21b2aa42 100644 --- a/src/EFCore/ChangeTracking/ValueComparer.cs +++ b/src/EFCore/ChangeTracking/ValueComparer.cs @@ -256,7 +256,6 @@ public static HashCode Add(HashCode hash, int code) public static ValueComparer CreateDefault( [DynamicallyAccessedMembers( DynamicallyAccessedMemberTypes.PublicMethods - | DynamicallyAccessedMemberTypes.NonPublicMethods | DynamicallyAccessedMemberTypes.PublicProperties)] Type type, bool favorStructuralComparisons) @@ -279,7 +278,11 @@ public static ValueComparer CreateDefault( /// /// The type. /// The . - public static ValueComparer CreateDefault(bool favorStructuralComparisons) + public static ValueComparer CreateDefault + <[DynamicallyAccessedMembers( + DynamicallyAccessedMemberTypes.PublicMethods + | DynamicallyAccessedMemberTypes.PublicProperties)] + T>(bool favorStructuralComparisons) { var nonNullableType = typeof(T).UnwrapNullableType(); @@ -313,7 +316,11 @@ public static ValueComparer CreateDefault(bool favorStructuralComparisons) } // PublicMethods is required to preserve e.g. GetHashCode - internal class DefaultValueComparer<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods)] T> : ValueComparer + internal class DefaultValueComparer + <[DynamicallyAccessedMembers( + DynamicallyAccessedMemberTypes.PublicMethods + | DynamicallyAccessedMemberTypes.PublicProperties)] + T> : ValueComparer { public DefaultValueComparer(bool favorStructuralComparisons) : base(favorStructuralComparisons) diff --git a/src/EFCore/ChangeTracking/ValueComparer`.cs b/src/EFCore/ChangeTracking/ValueComparer`.cs index 8f9a55f04c8..13d56a1b8e3 100644 --- a/src/EFCore/ChangeTracking/ValueComparer`.cs +++ b/src/EFCore/ChangeTracking/ValueComparer`.cs @@ -29,12 +29,10 @@ namespace Microsoft.EntityFrameworkCore.ChangeTracking; /// The type. // PublicMethods is required to preserve e.g. GetHashCode public class ValueComparer -<[DynamicallyAccessedMembers( + <[DynamicallyAccessedMembers( DynamicallyAccessedMemberTypes.PublicMethods - | DynamicallyAccessedMemberTypes.NonPublicMethods | DynamicallyAccessedMemberTypes.PublicProperties)] - T> - : ValueComparer, IEqualityComparer + T> : ValueComparer, IEqualityComparer { private Func? _equals; private Func? _hashCode;