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 das angegebene Element auf. Die methode, die aufgerufen werden soll, muss barrierefrei sein und die spezifischste Übereinstimmung mit der angegebenen Argumentliste bereitstellen, unter den Einschränkungen der angegebenen Ordner- und Aufrufattribute.
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);
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 elements, das aufgerufen werden soll. Dies kann ein Konstruktor, eine Methode, eine Eigenschaft oder ein Feld sein. Wenn eine leere Zeichenfolge ("") übergeben wird, wird das Standardelement aufgerufen.
- invokeAttr
- BindingFlags
Das Aufruf-Attribut. Dies muss eine der folgenden Sein: InvokeMethod, , CreateInstance, Static, , GetField, SetField, , oder GetPropertySetProperty.BindingFlags Es muss ein geeignetes Aufruf-Attribut angegeben werden. Wenn ein statisches Element aufgerufen werden soll, muss das Static Flag festgelegt werden.
- binder
- Binder
Ein Objekt, das die Bindung, die Koersion von Argumenttypen, den Aufruf von Elementen und das Abrufen von MemberInfo Objekten über Spiegelung ermöglicht. Ist binder dies nullder Grund, wird der Standardordner verwendet. Siehe Binder.
- target
- Object
Das Objekt, für das das angegebene Element aufgerufen werden soll.
- args
- Object[]
Ein Array vom Typ Object , das die Anzahl, Reihenfolge und den Typ der Parameter des zu aufrufenden Elements enthält. Enthält args eine nicht initialisierte Object, wird sie als leer behandelt, die mit dem Standardordner auf 0, 0,0 oder eine Zeichenfolge erweitert werden kann.
- modifiers
- ParameterModifier[]
Ein Array vom Typ ParameterModifier , das die gleiche Länge wie argselemente aufweist, die die Attribute darstellen, die den Argumenten des elements zugeordnet sind, das aufgerufen werden soll. Ein Parameter verfügt über Attribute, die dieser in der Signatur des Elements zugeordnet sind. Verwenden Sie ParameterModifier.ByReffür ByRef und für keine Verwendung ParameterModifier.None. Der Standardbinder erfüllt genau diesen Abgleich. Attribute wie In und InOut werden nicht in bindung verwendet und können mit ParameterInfoangezeigt werden.
- culture
- CultureInfo
Eine Instanz, die zum Steuern der CultureInfo Koersion von Typen verwendet wird. Dies ist beispielsweise erforderlich, um eine Zeichenfolge zu konvertieren, die 1000 in einen Double Wert darstellt, da 1000 von verschiedenen Kulturen unterschiedlich dargestellt wird. Ist culture dies nullder Grund, wird der CultureInfo für den aktuellen Thread CultureInfo verwendet.
- namedParameters
- String[]
Ein Zeichenfolgenarray, das Parameternamen enthält, die übereinstimmen, beginnend bei Element 0, mit dem args Array. Es darf keine Löcher im Array vorhanden sein. Wenn args.
Length ist größer als namedParameters.
Length, die verbleibenden Parameter werden in der Reihenfolge ausgefüllt.
Gibt zurück
Ein Object Wert, der den Rückgabewert des aufgerufenen Elements darstellt.
Hinweise
Eine Methode wird aufgerufen, wenn beide folgenden Bedingungen erfüllt sind:
Die Anzahl der Parameter in der Methodendeklaration entspricht der Anzahl der Argumente in der angegebenen Argumentliste (es sei denn, Standardargumente sind für das Element definiert).
Der Typ der einzelnen Argumente kann vom Ordner in den Typ des Parameters konvertiert werden.
Der Sammelordner findet alle passenden Methoden. Diese Methoden werden basierend auf dem Typ der angeforderten Bindung (BindingFlags.MethodInvoke, BindingFlags.GetPropertiesusw.) gefunden. Der Satz von Methoden wird nach dem Namen, der Anzahl der Argumente und einer Reihe von Suchmodifizierern gefiltert, die im Sammelordner definiert sind.
Nachdem die Methode ausgewählt wurde, wird sie aufgerufen. Die Barrierefreiheit wird zu diesem Zeitpunkt überprüft. Die Suche kann steuern, welche Methodengruppen auf der Grundlage des Barrierefreiheitsattributs gesucht werden, das der Methode zugeordnet ist. Die Binder.BindToMethod Methode ist für die Auswahl der aufgerufenen Methode verantwortlich. Der Standardbinder wählt die spezifischste Übereinstimmung aus.
Note
Zugriffsbeschränkungen werden für voll vertrauenswürdigen Code ignoriert. Das heißt, auf private Konstruktoren, Methoden, Felder und Eigenschaften kann mithilfe der Spiegelung zugegriffen und aufgerufen werden, wenn der Code vollständig vertrauenswürdig ist.
Derzeit führt InvokeMember die Microsoft .NET Framework-Spiegelungsemantik für jeden Objekttyp aus.
Wenn das durch den Namen angegebene Element ein Array ist und das BindingFlags.GetField Flag aktiviert invokeAttrist, gibt das args Array die Elemente an, deren Werte zurückgegeben werden sollen. Der folgende Aufruf durch Type ein Objekt t gibt beispielsweise den Wert des ersten Elements des Zeichenfolgenarrays "MyArray" zurück, bei dem es sich um ein Element des aufrufenden Objekts handelt:
String ret = (String) t.InvokeMember ("MyArray", BindingFlags.GetField, null, this, new Variant[]{0});
Sie können InvokeMember ein oder mehrere Elemente eines Memberarrays festlegen. Alle Elemente werden auf denselben Wert festgelegt. Das args Array muss wie folgt formatiert werden:
{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"});