MethodAttributes Enum

Definitie

Hiermee geeft u vlaggen voor methodekenmerken. Deze vlaggen worden gedefinieerd in het bestand corhdr.h.

Deze opsomming ondersteunt een bitsgewijze combinatie van de waarden van de leden.

public enum class MethodAttributes
[System.Flags]
public enum MethodAttributes
[System.Flags]
[System.Serializable]
public enum MethodAttributes
[System.Flags]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum MethodAttributes
[<System.Flags>]
type MethodAttributes = 
[<System.Flags>]
[<System.Serializable>]
type MethodAttributes = 
[<System.Flags>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type MethodAttributes = 
Public Enum MethodAttributes
Overname
MethodAttributes
Kenmerken

Velden

Name Waarde Description
PrivateScope 0

Geeft aan dat er niet naar het lid kan worden verwezen.

ReuseSlot 0

Geeft aan dat de methode een bestaande site in de vtable opnieuw gebruikt. Dit is het standaardgedrag.

Private 1

Geeft aan dat de methode alleen toegankelijk is voor de huidige klasse.

FamANDAssem 2

Geeft aan dat de methode alleen toegankelijk is voor leden van dit type en de afgeleide typen die zich alleen in deze assembly bevinden.

Assembly 3

Geeft aan dat de methode toegankelijk is voor elke klasse van deze assembly.

Family 4

Geeft aan dat de methode alleen toegankelijk is voor leden van deze klasse en de afgeleide klassen.

FamORAssem 5

Geeft aan dat de methode overal toegankelijk is voor afgeleide klassen, evenals voor elke klasse in de assembly.

Public 6

Geeft aan dat de methode toegankelijk is voor elk object waarvoor dit object binnen het bereik valt.

MemberAccessMask 7

Hiermee haalt u toegankelijkheidsgegevens op.

UnmanagedExport 8

Geeft aan dat de beheerde methode wordt geƫxporteerd door thunk naar niet-beheerde code.

Static 16

Geeft aan dat de methode is gedefinieerd voor het type; anders wordt deze per exemplaar gedefinieerd.

Final 32

Geeft aan dat de methode niet kan worden overschreven.

Virtual 64

Geeft aan dat de methode virtueel is.

HideBySig 128

Geeft aan dat de methode wordt verborgen op naam en handtekening; anders alleen op naam.

NewSlot 256

Geeft aan dat de methode altijd een nieuwe site in de vtable krijgt.

VtableLayoutMask 256

Hiermee worden vtable-kenmerken opgehaald.

CheckAccessOnOverride 512

Geeft aan dat de methode alleen kan worden overschreven wanneer deze ook toegankelijk is.

Abstract 1024

Geeft aan dat de klasse geen implementatie van deze methode biedt.

SpecialName 2048

Geeft aan dat de methode speciaal is. In de naam wordt beschreven hoe deze methode speciaal is.

RTSpecialName 4096

Geeft aan dat de algemene taalruntime de naamcodering controleert.

PinvokeImpl 8192

Geeft aan dat de implementatie van de methode wordt doorgestuurd via PInvoke (Platform Invocation Services).

HasSecurity 16384

Geeft aan dat aan de methode beveiliging is gekoppeld. Alleen gereserveerde vlag voor runtimegebruik.

RequireSecObject 32768

Geeft aan dat de methode een andere methode aanroept die beveiligingscode bevat. Alleen gereserveerde vlag voor runtimegebruik.

ReservedMask 53248

Geeft alleen een gereserveerde vlag aan voor runtime-gebruik.

Voorbeelden

In het volgende voorbeeld worden de kenmerken van de opgegeven methode weergegeven.

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);
            }
        }
    }
}
Imports System.Reflection

Class AttributesSample

    Public Sub Mymethod(ByVal int1m As Integer, ByRef str2m As String, ByRef str3m As String)
        str2m = "in Mymethod"
    End Sub


    Public Shared Function Main(ByVal args() As String) As Integer
        Console.WriteLine("Reflection.MethodBase.Attributes Sample")

        ' Get the type of a chosen class.
        Dim MyType As Type = Type.GetType("AttributesSample")

        ' Get the method Mymethod on the type.
        Dim Mymethodbase As MethodBase = MyType.GetMethod("Mymethod")

        ' Display the method name and signature.
        Console.WriteLine("Mymethodbase = {0}", Mymethodbase)

        ' Get the MethodAttribute enumerated value.
        Dim Myattributes As MethodAttributes = Mymethodbase.Attributes

        ' Display the flags that are set.
        PrintAttributes(GetType(System.Reflection.MethodAttributes), CInt(Myattributes))
        Return 0
    End Function 'Main

    Public Shared Sub PrintAttributes(ByVal attribType As Type, ByVal iAttribValue As Integer)
        If Not attribType.IsEnum Then
            Console.WriteLine("This type is not an enum.")
            Return
        End If
        Dim fields As FieldInfo() = attribType.GetFields((BindingFlags.Public Or BindingFlags.Static))
        Dim i As Integer
        For i = 0 To fields.Length - 1
            Dim fieldvalue As Integer = CType(fields(i).GetValue(Nothing), Int32)
            If (fieldvalue And iAttribValue) = fieldvalue Then
                Console.WriteLine(fields(i).Name)
            End If
        Next i
    End Sub
End Class

Van toepassing op