Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel enthält ergänzende Hinweise zur Referenzdokumentation für diese API.
Die MethodBuilder Klasse wird verwendet, um eine Methode in allgemeiner Zwischensprache (CIL) vollständig zu beschreiben, einschließlich Name, Attribute, Signatur und Methodentext. Er wird in Verbindung mit der Klasse TypeBuilder verwendet, um Klassen zur Laufzeit zu erstellen.
Sie können Reflection emit verwenden, um globale Methoden zu definieren und um Methoden als Mitglieder des Typs zu definieren. Die APIs, die Methoden definieren, geben Objekte zurück MethodBuilder .
Globale Methoden
Eine globale Methode wird mithilfe der ModuleBuilder.DefineGlobalMethod Methode definiert, die ein MethodBuilder Objekt zurückgibt.
Globale Methoden müssen statisch sein. Wenn ein dynamisches Modul globale Methoden enthält, muss die ModuleBuilder.CreateGlobalFunctions Methode aufgerufen werden, bevor das dynamische Modul oder die enthaltende dynamische Assembly beibehalten wird, da die Common Language Runtime das Beheben des dynamischen Moduls verzögert, bis alle globalen Funktionen definiert wurden.
Eine globale systemeigene Methode wird mithilfe der ModuleBuilder.DefinePInvokeMethod Methode definiert. Plattformaufrufmethoden (PInvoke) dürfen nicht abstrakt oder virtuell deklariert werden. Die Laufzeit legt das MethodAttributes.PinvokeImpl Attribut für eine Plattformaufrufmethode fest.
Methoden als Elemente von Typen
Eine Methode wird mithilfe der TypeBuilder.DefineMethod Methode, die ein MethodBuilder Objekt zurückgibt, als Typmemm definiert.
Die DefineParameter Methode wird verwendet, um den Namen und die Parameterattribute eines Parameters oder des Rückgabewerts festzulegen. Das ParameterBuilder von dieser Methode zurückgegebene Objekt stellt einen Parameter oder den Rückgabewert dar. Das ParameterBuilder Objekt kann verwendet werden, um das Marshalling festzulegen, den Konstantenwert festzulegen und benutzerdefinierte Attribute anzuwenden.
Attribute
Elemente der MethodAttributes Enumeration definieren den genauen Charakter einer dynamischen Methode.
- Statische Methoden werden mithilfe des MethodAttributes.Static Attributs angegeben.
- Endgültige Methoden (Methoden, die nicht außer Kraft gesetzt werden können) werden mithilfe des MethodAttributes.Final Attributs angegeben.
- Virtuelle Methoden werden mithilfe des MethodAttributes.Virtual Attributs angegeben.
- Abstrakte Methoden werden mithilfe des MethodAttributes.Abstract Attributs angegeben.
- Mehrere Attribute bestimmen die Methodensichtbarkeit. Siehe die Beschreibung der MethodAttributes-Auflistung.
- Methoden, die überladene Operatoren implementieren, müssen das MethodAttributes.SpecialName Attribut festlegen.
- Finalizer müssen das MethodAttributes.SpecialName Attribut festlegen.
Bekannte Probleme
- Obwohl MethodBuilder von MethodInfo abgeleitet wird, werden einige der in der MethodInfo-Klasse definierten abstrakten Methoden nicht vollständig in MethodBuilder implementiert. Diese MethodBuilder-Methoden verursachen die NotSupportedException. Beispielsweise ist die Methode MethodBuilder.Invoke nicht vollständig implementiert. Sie können über diese Methoden nachdenken, indem Sie den eingeschlossenen Typ mithilfe der Methoden Type.GetType oder Assembly.GetType abrufen.
- Benutzerdefinierte Modifizierer werden unterstützt.