[API Proposal]: Make DynamicallyAccessedMembersAttribute accept member names
- Dominant language
- C#
- Stars
- 18.3k
- Forks
- 5.6k
- PR merge metrics
- PR metrics pending
Description
### Background and motivation
Every time I've used DynamicallyAccessedMembersAttribute, I found that it is too broad. I'm supposed to pick all public methods, private methods, etc, but every time I've used it, I only needed members with a specific name, and the attribute as-is will keep much more untrimmed than I need. That's why I'm proposing adding the ability to limit the members to certain member names. This should help a lot with trimming.
### API Proposal
```c#
namespace System.Diagnostics.CodeAnalysis;
public sealed partial class DynamicallyAccessedMembersAttribute : Attribute
{
public DynamicallyAccessedMembersAttribute(DynamicallyAccessedMemberTypes memberTypes, params string[] memberNames);
public string[]? MemberNames { get; }
}
```
### API Usage
```c#
struct S<
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods, "op_Equality", "op_Inequality")]
T>
{
}
struct S2<
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods, "Parse", "TryParse")]
T>
{
}
```
### Alternative Designs
_No response_
### Risks
_No response_
Contributor guide
Assessment
This issue has not been assessed yet.