Reduce the trim requirements on MetadataUpdateHandlerAttribute (#84369)
authorBadre BSAILA <54767641+pedrobsaila@users.noreply.github.com>
Wed, 19 Apr 2023 18:20:25 +0000 (20:20 +0200)
committerGitHub <noreply@github.com>
Wed, 19 Apr 2023 18:20:25 +0000 (13:20 -0500)
src/libraries/System.Private.CoreLib/src/System/Reflection/Metadata/MetadataUpdateHandlerAttribute.cs
src/libraries/System.Runtime.Loader/ref/System.Runtime.Loader.cs
src/libraries/apicompat/ApiCompatBaseline.NetCoreAppLatestStable.xml

index c66473df6f93d06ea5bb2ab1348d29c0c0f59142..b124ca3deb953fd0e3aa11a646379c935b8b4a0a 100644 (file)
@@ -28,11 +28,11 @@ namespace System.Reflection.Metadata
     {
         /// <summary>Initializes the attribute.</summary>
         /// <param name="handlerType">A type that handles metadata updates and that should be notified when any occur.</param>
-        public MetadataUpdateHandlerAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type handlerType) =>
+        public MetadataUpdateHandlerAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)] Type handlerType) =>
             HandlerType = handlerType;
 
         /// <summary>Gets the type that handles metadata updates and that should be notified when any occur.</summary>
-        [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
+        [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)]
         public Type HandlerType { get; }
     }
 }
index a6ab1de1524fdb29ffcd8dc5c27a65ff00f01770..e5c08f6132c8ea30beceac0554c19d5d3367dcc8 100644 (file)
@@ -4,6 +4,8 @@
 // Changes to this file must follow the https://aka.ms/api-review process.
 // ------------------------------------------------------------------------------
 
+using System.Diagnostics.CodeAnalysis;
+
 namespace System.Reflection.Metadata
 {
     public static partial class AssemblyExtensions
@@ -19,8 +21,8 @@ namespace System.Reflection.Metadata
     [System.AttributeUsage(System.AttributeTargets.Assembly, AllowMultiple = true)]
     public sealed class MetadataUpdateHandlerAttribute : System.Attribute
     {
-        public MetadataUpdateHandlerAttribute([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type handlerType) { }
-        [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)]
+        public MetadataUpdateHandlerAttribute([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods)] System.Type handlerType) { }
+        [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods)]
         public System.Type HandlerType { get { throw null; } }
     }
 }
index d71ecb2355a24330555336714d81fd0122562169..f744ff4c19376faaf7e3af2beaff738da6f74c5d 100644 (file)
     <Left>net7.0/System.Linq.Queryable.dll</Left>
     <Right>net8.0/System.Linq.Queryable.dll</Right>
   </Suppression>
+  <Suppression>
+    <DiagnosticId>CP0015</DiagnosticId>
+    <Target>M:System.Reflection.Metadata.MetadataUpdateHandlerAttribute.#ctor(System.Type)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute]</Target>
+    <Left>net7.0/System.Runtime.Loader.dll</Left>
+    <Right>net8.0/System.Runtime.Loader.dll</Right>
+  </Suppression>
+  <Suppression>
+    <DiagnosticId>CP0015</DiagnosticId>
+    <Target>P:System.Reflection.Metadata.MetadataUpdateHandlerAttribute.HandlerType:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute]</Target>
+    <Left>net7.0/System.Runtime.Loader.dll</Left>
+    <Right>net8.0/System.Runtime.Loader.dll</Right>
+  </Suppression>
   <Suppression>
     <DiagnosticId>CP0015</DiagnosticId>
     <Target>M:System.Runtime.Serialization.Formatter.Deserialize(System.IO.Stream):[T:System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute]</Target>