Skip to content

Add DynamicallyAccessedMembersAttribute #33861

@MichalStrehovsky

Description

@MichalStrehovsky

This is in support of dotnet/linker#988 - see the spec there for motivation.

namespace System.Runtime.CompilerServices
{
    [AttributeUsage(
        AttributeTargets.Field |
        AttributeTargets.ReturnValue |
        AttributeTargets.GenericParameter |
        AttributeTargets.Parameter |
        AttributeTargets.Property)]
    public sealed class DynamicallyAccessedMembersAttribute : Attribute
    {
        public DynamicallyAccessedMembersAttribute(DynamicallyAccessedMemberKinds memberKinds)
        {
            MemberKinds = memberKinds;
        }

        public DynamicallyAccessedMemberKinds MemberKinds { get; }
    }

    [Flags]
    public enum DynamicallyAccessedMemberKinds
    {
        DefaultConstructor  = 0b00000000_00000001,
        PublicConstructors  = 0b00000000_00000011,
        Constructors        = 0b00000000_00000111,
        PublicMethods       = 0b00000000_00001000,
        Methods             = 0b00000000_00011000,
        PublicFields        = 0b00000000_00100000,
        Fields              = 0b00000000_01100000,
        PublicNestedTypes   = 0b00000000_10000000,
        NestedTypes         = 0b00000001_10000000,
        PublicProperties    = 0b00000010_00000000,
        Properties          = 0b00000110_00000000,
        PublicEvents        = 0b00001000_00000000,
        Events              = 0b00011000_00000000,
    }
}

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions