MethodAttributes 枚举

定义

指定方法属性的标志。 这些标志在 Corhdr.h 文件中进行定义。

此枚举支持其成员值的按位组合。

C#
[System.Flags]
public enum MethodAttributes
C#
[System.Flags]
[System.Serializable]
public enum MethodAttributes
C#
[System.Flags]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum MethodAttributes
继承
MethodAttributes
属性

字段

名称 说明
Abstract 1024

指示此类不提供此方法的实现。

Assembly 3

指示此方法可由该程序集的任何类访问。

CheckAccessOnOverride 512

指示仅当此方法可访问时,才可以对其进行重写。

FamANDAssem 2

指示此方法只能由该类型和它在此程序集中的派生类型的成员访问。

Family 4

指示此方法只可由该类及其派生类的成员访问。

FamORAssem 5

指示此方法可由任意位置的派生类访问,也可由程序集中的任何类访问。

Final 32

指示无法重写此方法。

HasSecurity 16384

指示此方法具有关联的安全性。 保留此标志仅供运行时使用。

HideBySig 128

指示此方法按名称和签名隐藏,否则只按名称隐藏。

MemberAccessMask 7

检索可访问性信息。

NewSlot 256

指示此方法总是获取 vtable 中的新槽。

PinvokeImpl 8192

指示此方法的实现通过 PInvoke(平台调用服务)转发。

Private 1

指示此方法只能由当前类访问。

PrivateScope 0

指示该成员不能被引用。

Public 6

指示此方法可由任何包括该对象的对象访问。

RequireSecObject 32768

指示此方法调用另一个包含安全性代码的方法。 保留此标志仅供运行时使用。

ReservedMask 53248

指示仅供运行时使用的保留标志。

ReuseSlot 0

指示此方法将重复使用 vtable 中的现有槽。 此选项为默认行为。

RTSpecialName 4096

指示公共语言运行时检查名称编码。

SpecialName 2048

指示此方法是特殊的。 名称描述此方法的特殊性。

Static 16

指示在类型上定义此方法,否则基于每个实例定义此方法。

UnmanagedExport 8

指示此托管方法由 thunk 导出为非托管代码。

Virtual 64

指示此方法为虚方法。

VtableLayoutMask 256

检索 vtable 属性。

示例

以下示例显示指定方法的属性。

C#
using System;
using System.Reflection;

class AttributesSample
{
    public void Mymethod (int int1m, out string str2m, ref string str3m)
    {
        str2m = "in Mymethod";
    }

    public static int Main(string[] args)
    {
        Console.WriteLine ("Reflection.MethodBase.Attributes Sample");

        // Get the type of the chosen class.
        Type MyType = Type.GetType("AttributesSample");

        // Get the method Mymethod on the type.
        MethodBase Mymethodbase = MyType.GetMethod("Mymethod");

        // Display the method name and signature.
        Console.WriteLine("Mymethodbase = " + Mymethodbase);

        // Get the MethodAttribute enumerated value.
        MethodAttributes Myattributes = Mymethodbase.Attributes;

        // Display the flags that are set.
        PrintAttributes(typeof(System.Reflection.MethodAttributes), (int) Myattributes);
        return 0;
    }

    public static void PrintAttributes(Type attribType, int iAttribValue)
    {
        if (!attribType.IsEnum) {Console.WriteLine("This type is not an enum."); return;}

        FieldInfo[] fields = attribType.GetFields(BindingFlags.Public | BindingFlags.Static);
        for (int i = 0; i < fields.Length; i++)
        {
            int fieldvalue = (int)fields[i].GetValue(null);
            if ((fieldvalue & iAttribValue) == fieldvalue)
            {
                Console.WriteLine(fields[i].Name);
            }
        }
    }
}

适用于

产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0