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.