diff --git a/src/coreclr/src/System.Private.CoreLib/src/Internal/Runtime/InteropServices/ComActivator.cs b/src/coreclr/src/System.Private.CoreLib/src/Internal/Runtime/InteropServices/ComActivator.cs index 17db43fcd1c37..40e40d5b9d99c 100644 --- a/src/coreclr/src/System.Private.CoreLib/src/Internal/Runtime/InteropServices/ComActivator.cs +++ b/src/coreclr/src/System.Private.CoreLib/src/Internal/Runtime/InteropServices/ComActivator.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; using System.IO; using System.Reflection; using System.Runtime.InteropServices; @@ -700,6 +701,7 @@ internal sealed class LicenseInteropProxy // LicenseContext private readonly MethodInfo _setSavedLicenseKey; + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] private readonly Type _licInfoHelper; private readonly MethodInfo _licInfoHelperContains; diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/ILLinkTrim.xml b/src/libraries/System.ComponentModel.TypeConverter/src/ILLinkTrim_LibraryBuild.xml similarity index 100% rename from src/libraries/System.ComponentModel.TypeConverter/src/ILLinkTrim.xml rename to src/libraries/System.ComponentModel.TypeConverter/src/ILLinkTrim_LibraryBuild.xml diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/TypeDescriptor.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/TypeDescriptor.cs index 6d91d412d2ce7..353bef276e241 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/TypeDescriptor.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/TypeDescriptor.cs @@ -2319,8 +2319,7 @@ public static void Refresh(Assembly assembly) [EditorBrowsable(EditorBrowsableState.Advanced)] public static Type ComObjectType { - [PreserveDependency(".ctor", "System.ComponentModel.TypeDescriptor/TypeDescriptorComObject")] - [PreserveDependency(".ctor", "System.ComponentModel.TypeDescriptor/ComNativeDescriptorProxy")] // TODO: https://github.com/mono/linker/issues/801 + [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] get => typeof(TypeDescriptorComObject); } diff --git a/src/libraries/System.ObjectModel/src/System/ComponentModel/TypeDescriptionProviderAttribute.cs b/src/libraries/System.ObjectModel/src/System/ComponentModel/TypeDescriptionProviderAttribute.cs index c5c4cbfaa6036..a5ceca7697896 100644 --- a/src/libraries/System.ObjectModel/src/System/ComponentModel/TypeDescriptionProviderAttribute.cs +++ b/src/libraries/System.ObjectModel/src/System/ComponentModel/TypeDescriptionProviderAttribute.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System.Diagnostics.CodeAnalysis; + namespace System.ComponentModel { [AttributeUsage(AttributeTargets.Class, Inherited = true)] @@ -10,7 +12,7 @@ public sealed class TypeDescriptionProviderAttribute : Attribute /// /// Creates a new TypeDescriptionProviderAttribute object. /// - public TypeDescriptionProviderAttribute(string typeName) + public TypeDescriptionProviderAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] string typeName) { if (typeName == null) { @@ -23,7 +25,7 @@ public TypeDescriptionProviderAttribute(string typeName) /// /// Creates a new TypeDescriptionProviderAttribute object. /// - public TypeDescriptionProviderAttribute(Type type) + public TypeDescriptionProviderAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] Type type) { if (type == null) { @@ -37,6 +39,7 @@ public TypeDescriptionProviderAttribute(Type type) /// The TypeName property returns the assembly qualified type name /// for the type description provider. /// + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] public string TypeName { get; } } } diff --git a/src/libraries/System.Private.CoreLib/src/System/ComponentModel/DefaultValueAttribute.cs b/src/libraries/System.Private.CoreLib/src/System/ComponentModel/DefaultValueAttribute.cs index b15719bbb8724..044d05949fe04 100644 --- a/src/libraries/System.Private.CoreLib/src/System/ComponentModel/DefaultValueAttribute.cs +++ b/src/libraries/System.Private.CoreLib/src/System/ComponentModel/DefaultValueAttribute.cs @@ -4,6 +4,7 @@ using System.Globalization; using System.Reflection; +using System.Runtime.CompilerServices; using System.Threading; namespace System.ComponentModel @@ -27,6 +28,8 @@ public class DefaultValueAttribute : Attribute /// class, converting the specified value to the specified type, and using the U.S. English /// culture as the translation context. /// + // TODO: https://github.com/mono/linker/issues/943 + [PreserveDependency("ConvertFromInvariantString", "System.ComponentModel.TypeConverter", "System.ComponentModel.TypeConverter")] public DefaultValueAttribute(Type type, string? value) { // The null check and try/catch here are because attributes should never throw exceptions.