MethodAttributes Enum
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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
- 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