TypeDelegator.InvokeMember Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft den angegebenen Member auf. Die Methode, die aufgerufen werden soll, muss zugänglich sein und mit der angegebenen Argumentliste unter den Einschränkungen des angegebenen Binders und der Aufrufattribute die spezifischste Übereinstimmung bereitstellen.
public:
override System::Object ^ InvokeMember(System::String ^ name, System::Reflection::BindingFlags invokeAttr, System::Reflection::Binder ^ binder, System::Object ^ target, cli::array <System::Object ^> ^ args, cli::array <System::Reflection::ParameterModifier> ^ modifiers, System::Globalization::CultureInfo ^ culture, cli::array <System::String ^> ^ namedParameters);
public override object? InvokeMember (string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, object? target, object?[]? args, System.Reflection.ParameterModifier[]? modifiers, System.Globalization.CultureInfo? culture, string[]? namedParameters);
public override object InvokeMember (string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object target, object[] args, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, string[] namedParameters);
override this.InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> obj
Public Overrides Function InvokeMember (name As String, invokeAttr As BindingFlags, binder As Binder, target As Object, args As Object(), modifiers As ParameterModifier(), culture As CultureInfo, namedParameters As String()) As Object
Parameter
- name
- String
Der Name des aufzurufenden Members. Dies kann ein Konstruktor, eine Methode, eine Eigenschaft oder ein Feld sein. Wenn eine leere Zeichenfolge ("") übergeben wird, wird der Standardmember aufgerufen.
- invokeAttr
- BindingFlags
Das Attribut für den Aufruf. Dabei muss es sich um eine der folgenden BindingFlags-Enumerationen handeln: InvokeMethod
, CreateInstance
, Static
, GetField
, SetField
, GetProperty
oder SetProperty
. Es muss ein geeignetes Aufrufattribut angegeben werden. Wenn ein statischer Member aufgerufen werden soll, muss das Static
-Flag festgelegt werden.
- binder
- Binder
Ein Objekt, das die Bindung, die Umwandlung von Argumenttypen, das Aufrufen von Membern und das Abrufen von MemberInfo
-Objekten über Reflektion ermöglicht. Wenn binder
den Wert null
aufweist, wird der Standardbinder verwendet. Siehe Binder.
- target
- Object
Das Objekt, für das der angegebene Member aufgerufen werden soll.
- args
- Object[]
Ein Array vom Typ Object
, das Anzahl, Reihenfolge und Typ der Parameter des aufzurufenden Members enthält. Wenn args
ein nicht initialisiertes Object
enthält, wird dieses als leer behandelt und kann mit dem Standardbinder auf 0, 0.0 oder eine Zeichenfolge erweitert werden.
- modifiers
- ParameterModifier[]
Ein Array vom Typ ParameterModifier
mit derselben Länge wie args
und mit Elementen, die die Attribute darstellen, die den Argumenten des aufzurufenden Members zugeordnet sind. Ein Parameter verfügt über Attribute, die ihm in der Signatur des Members zugeordnet sind. Verwenden Sie für ByRef ParameterModifier.ByRef
, für keine Attribute verwenden Sie ParameterModifier.None
. Der Standardbinder sucht für diese nach genauen Entsprechungen. Attribute wie In
und InOut
werden bei der Bindung nicht verwendet und können mithilfe von ParameterInfo
angezeigt werden.
- culture
- CultureInfo
Eine Instanz von CultureInfo
für die Steuerung der Umwandlung von Typen. Dies ist erforderlich, um z. B. eine Zeichenfolge, die die Zahl 1000 darstellt, in einen Double-Wert zu konvertieren, da die Zahl 1000 in den verschiedenen Kulturen unterschiedlich dargestellt wird.) Wenn culture
den Wert null
hat, wird die CultureInfo für die CultureInfo des aktuellen Threads verwendet.
- namedParameters
- String[]
Dies ist ein Zeichenfolgenarray, das Parameternamen enthält, die ab dem Element 0 mit dem args
-Array übereinstimmen. Das Array darf keine Lücken aufweisen. Wenn args
.
Length
ist größer als namedParameters
.
Length
, die verbleibenden Parameter werden der Reihenfolge nach aufgefüllt.
Gibt zurück
Ein Object
, das den Rückgabewert des aufgerufenen Members darstellt.
Hinweise
Eine -Methode wird aufgerufen, wenn die beiden folgenden Bedingungen erfüllt sind:
Die Anzahl der Parameter in der Methodendeklaration entspricht der Anzahl von Argumenten in der angegebenen Argumentliste (es sei denn, Standardargumente sind für das Element definiert).
Der Typ der einzelnen Argumente kann vom Binder in den Typ des Parameters konvertiert werden.
Der Binder findet alle übereinstimmenden Methoden. Diese Methoden werden basierend auf dem Typ der angeforderten Bindung (BindingFlags.MethodInvoke
, BindingFlags.GetProperties
usw.) gefunden. Der Satz von Methoden wird nach dem Namen, der Anzahl der Argumente und einer Reihe von Suchmodifizierern gefiltert, die im Binder definiert sind.
Nachdem die Methode ausgewählt wurde, wird sie aufgerufen. Die Barrierefreiheit wird an diesem Punkt überprüft. Die Suche kann steuern, welcher Satz von Methoden basierend auf dem der Methode zugeordneten Barrierefreiheitsattribut durchsucht wird. Die Binder.BindToMethod -Methode ist für die Auswahl der methode verantwortlich, die aufgerufen werden soll. Der Standardbinder wählt die spezifischste Übereinstimmung aus.
Hinweis
Zugriffseinschränkungen werden für vollständig vertrauenswürdigen Code ignoriert. Das heißt, private Konstruktoren, Methoden, Felder und Eigenschaften können mithilfe von Reflektion aufgerufen und aufgerufen werden, wenn der Code vollständig vertrauenswürdig ist.
InvokeMember
Derzeit führt die Microsoft .NET Framework-Reflektionsemantik für jeden Objekttyp aus.
Wenn das durch den Namen angegebene Element ein Array ist und das BindingFlags.GetField
Flag auf invokeAttr
festgelegt ist, gibt das args
Array die Elemente an, deren Werte zurückgegeben werden sollen. Das folgende Durchrufobjekt Type
t
gibt beispielsweise den Wert des ersten Elements des Zeichenfolgenarrays MyArray zurück, das ein Member des aufrufenden Objekts ist:
String ret = (String) t.InvokeMember ("MyArray", BindingFlags.GetField, null, this, new Variant[]{0});
Sie können verwenden InvokeMember
, um ein oder mehrere Elemente eines Memberarrays festzulegen. Alle Elemente sind auf den gleichen Wert festgelegt. Das args
Array muss wie folgt formatiert sein:
{index1,
index2,, value}
Um beispielsweise das erste Element von MyArray aus dem vorherigen Beispiel festzulegen, lautet die Syntax wie folgt:
t.InvokeMember ("MyArray", BindingFlags.SetField, null, this, new
Variant[]{0,"Updated"});