|
@@ -0,0 +1,121 @@
|
|
|
+#pragma warning disable MA0048 // File name must match type name
|
|
|
+// https://github.com/dotnet/runtime/tree/main/src/libraries/System.Private.CoreLib/src/System/Diagnostics/CodeAnalysis
|
|
|
+
|
|
|
+// Licensed to the .NET Foundation under one or more agreements.
|
|
|
+// The .NET Foundation licenses this file to you under the MIT license.
|
|
|
+// See the LICENSE file in the project root for more information.
|
|
|
+
|
|
|
+namespace System.Diagnostics.CodeAnalysis
|
|
|
+{
|
|
|
+#nullable enable
|
|
|
+#if !NET6_0_OR_GREATER
|
|
|
+ [AttributeUsage(
|
|
|
+ AttributeTargets.Field | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter |
|
|
|
+ AttributeTargets.Parameter | AttributeTargets.Property | AttributeTargets.Method |
|
|
|
+ AttributeTargets.Class | AttributeTargets.Interface | AttributeTargets.Struct,
|
|
|
+ Inherited = false)]
|
|
|
+ internal sealed class DynamicallyAccessedMembersAttribute : Attribute
|
|
|
+ {
|
|
|
+ public DynamicallyAccessedMembersAttribute(DynamicallyAccessedMemberTypes memberTypes)
|
|
|
+ {
|
|
|
+ MemberTypes = memberTypes;
|
|
|
+ }
|
|
|
+
|
|
|
+ public DynamicallyAccessedMemberTypes MemberTypes { get; }
|
|
|
+ }
|
|
|
+
|
|
|
+ [Flags]
|
|
|
+ internal enum DynamicallyAccessedMemberTypes
|
|
|
+ {
|
|
|
+ None = 0,
|
|
|
+ PublicParameterlessConstructor = 0x0001,
|
|
|
+ PublicConstructors = 0x0002 | PublicParameterlessConstructor,
|
|
|
+ NonPublicConstructors = 0x0004,
|
|
|
+ PublicMethods = 0x0008,
|
|
|
+ NonPublicMethods = 0x0010,
|
|
|
+ PublicFields = 0x0020,
|
|
|
+ NonPublicFields = 0x0040,
|
|
|
+ PublicNestedTypes = 0x0080,
|
|
|
+ NonPublicNestedTypes = 0x0100,
|
|
|
+ PublicProperties = 0x0200,
|
|
|
+ NonPublicProperties = 0x0400,
|
|
|
+ PublicEvents = 0x0800,
|
|
|
+ NonPublicEvents = 0x1000,
|
|
|
+ Interfaces = 0x2000,
|
|
|
+ All = ~None
|
|
|
+ }
|
|
|
+
|
|
|
+ [AttributeUsage(
|
|
|
+ AttributeTargets.Constructor | AttributeTargets.Field | AttributeTargets.Method,
|
|
|
+ AllowMultiple = true, Inherited = false)]
|
|
|
+ internal sealed class DynamicDependencyAttribute : Attribute
|
|
|
+ {
|
|
|
+ public DynamicDependencyAttribute(string memberSignature)
|
|
|
+ {
|
|
|
+ MemberSignature = memberSignature;
|
|
|
+ }
|
|
|
+
|
|
|
+ public DynamicDependencyAttribute(string memberSignature, Type type)
|
|
|
+ {
|
|
|
+ MemberSignature = memberSignature;
|
|
|
+ Type = type;
|
|
|
+ }
|
|
|
+
|
|
|
+ public DynamicDependencyAttribute(string memberSignature, string typeName, string assemblyName)
|
|
|
+ {
|
|
|
+ MemberSignature = memberSignature;
|
|
|
+ TypeName = typeName;
|
|
|
+ AssemblyName = assemblyName;
|
|
|
+ }
|
|
|
+
|
|
|
+ public DynamicDependencyAttribute(DynamicallyAccessedMemberTypes memberTypes, Type type)
|
|
|
+ {
|
|
|
+ MemberTypes = memberTypes;
|
|
|
+ Type = type;
|
|
|
+ }
|
|
|
+
|
|
|
+ public DynamicDependencyAttribute(DynamicallyAccessedMemberTypes memberTypes, string typeName, string assemblyName)
|
|
|
+ {
|
|
|
+ MemberTypes = memberTypes;
|
|
|
+ TypeName = typeName;
|
|
|
+ AssemblyName = assemblyName;
|
|
|
+ }
|
|
|
+
|
|
|
+ public string? MemberSignature { get; }
|
|
|
+ public DynamicallyAccessedMemberTypes MemberTypes { get; }
|
|
|
+ public Type? Type { get; }
|
|
|
+ public string? TypeName { get; }
|
|
|
+ public string? AssemblyName { get; }
|
|
|
+ public string? Condition { get; set; }
|
|
|
+ }
|
|
|
+
|
|
|
+ [AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor | AttributeTargets.Class, Inherited = false)]
|
|
|
+ internal sealed class RequiresUnreferencedCodeAttribute : Attribute
|
|
|
+ {
|
|
|
+ public RequiresUnreferencedCodeAttribute(string message)
|
|
|
+ {
|
|
|
+ Message = message;
|
|
|
+ }
|
|
|
+
|
|
|
+ public string Message { get; }
|
|
|
+ public string? Url { get; set; }
|
|
|
+ }
|
|
|
+
|
|
|
+ [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
|
|
|
+ internal sealed class UnconditionalSuppressMessageAttribute : Attribute
|
|
|
+ {
|
|
|
+ public UnconditionalSuppressMessageAttribute(string category, string checkId)
|
|
|
+ {
|
|
|
+ Category = category;
|
|
|
+ CheckId = checkId;
|
|
|
+ }
|
|
|
+ public string Category { get; }
|
|
|
+ public string CheckId { get; }
|
|
|
+ public string? Scope { get; set; }
|
|
|
+ public string? Target { get; set; }
|
|
|
+ public string? MessageId { get; set; }
|
|
|
+ public string? Justification { get; set; }
|
|
|
+ }
|
|
|
+#endif
|
|
|
+}
|
|
|
+
|