GetMethod

Ruft die Implementierungsfunktion einer Methode ab.

Methode := GetMethod(Wert , Name, ParamAnzahl)

Parameter

Wert

Typ: Beliebig

Ein Wert beliebigen Typs, außer vom Typ ComObject.

Name

Typ: Zeichenkette

Wenn weggelassen, wird die Validierung an Wert selbst durchgeführt und bei Erfolg Wert zurückzugeben. Andernfalls geben Sie den Namen der abzurufenden Methode an.

ParamAnzahl
Typ: Integer

Wenn weggelassen (oder wenn die Parameteranzahl nicht verifiziert wurde), wird eine grundlegende Prüfung für eine Call-Methode durchgeführt, um zu verifizieren, dass das Objekt sehr wahrscheinlich aufrufbar ist.

Andernfalls geben Sie die Anzahl der Parameter an, die der Methode oder Funktion voraussichtlich übergeben werden. Wenn angegeben, können die MinParams-, MaxParams- und IsVariadic-Eigenschaft der Methode abgefragt werden, um zu verifizieren, ob die Methode diese Anzahl von Parametern akzeptieren kann. Wenn diese Eigenschaften nicht vorhanden sind, wird die Anzahl der Parameter nicht verifiziert.

Diese Anzahl sollte den impliziten this-Parameter nicht enthalten.

Rückgabewert

Typ: Funktionsobjekt

Diese Funktion gibt das Funktionsobjekt zurück, das die Implementierung der Methode enthält, oder Wert selbst, wenn Name weggelassen wurde.

Fehlerbehandlung

Wenn die Methode nicht gefunden wird oder nicht ohne indirekten Aufruf eines Eigenschafts-Getters abgerufen werden kann, wird ein MethodError ausgelöst.

Wenn eine Validierung versucht wird, können Ausnahmen durch die Abfrage der Eigenschaften der Methode ausgelöst werden. Es wird ein ValueError oder MethodError ausgelöst, wenn die Validierung fehlschlägt.

Bemerkungen

Methoden können auf eine der folgenden Arten definiert werden:

Beim Aufruf des Funktionsobjekts muss ein Wert für den normalerweise versteckten this-Parameter übergeben werden. Zum Beispiel Methode(Wert, Params*).

Obwohl die Standardimplementierung von GetMethod Einschränkungen hat (wie oben beschrieben), kann, wenn Wert.GetMethod(Name) anstelle von GetMethod(Wert, Name) verwendet wird, das Wert-Objekt seine eigene Implementierung von GetMethod definieren.

GetMethod(Wert, "Call", N) ist nicht dasselbe wie GetMethod(Wert,, N), da die Call-Methode das Funktionsobjekt selbst als Parameter nimmt und die Verwendung ansonsten von der von Wert abweichen kann. Func.Prototype.Call ist z.B. eine Einzelmethode, die für alle internen und benutzerdefinierten Funktionen gilt und als solche eine beliebige Anzahl von Parametern akzeptieren muss.

Objekte, HasMethod, HasBase, HasProp

Beispiele

Ermittelt und meldet Informationen über die GetMethod-Methode.

Methode := GetMethod({}, "GetMethod")  ; Sie ist auch eine Methode.
MsgBox Methode.MaxParams  ; Nimmt 2 Parameter, einschließlich 'this'.
MsgBox Methode = GetMethod  ; Tatsächlich dasselbe Objekt in diesem Fall.