IReflect.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 ein angegebenes Element auf.
public:
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);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)]
public 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);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)]
public 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 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 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);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)>]
abstract member InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> obj
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)>]
abstract member InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> obj
abstract member InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> obj
Public 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 zu suchenden Elements.
- invokeAttr
- BindingFlags
Eines der BindingFlags Aufrufattribute. Der invokeAttr Parameter kann ein Konstruktor, eine Methode, eine Eigenschaft oder ein Feld sein. Es muss ein geeignetes Aufruf-Attribut angegeben werden. Rufen Sie das Standardelement einer Klasse auf, indem Sie die leere Zeichenfolge ("") als Namen des Elements übergeben.
- binder
- Binder
Eines der BindingFlags Bitkennzeichnungen. BinderImplementiert , das Eigenschaften enthält, die sich auf diese Methode beziehen.
- target
- Object
Das Objekt, für das das angegebene Element aufgerufen werden soll. Dieser Parameter wird für statische Member ignoriert.
- args
- Object[]
Ein Array von Objekten, die die Anzahl, Reihenfolge und den Typ der Parameter des elements enthalten, die aufgerufen werden sollen. Dies ist ein leeres Array, wenn keine Parameter vorhanden sind.
- modifiers
- ParameterModifier[]
Ein Array von ParameterModifier-Objekten. Dieses Array hat dieselbe Länge wie der args Parameter, der die Argumentattribute des aufgerufenen Elements in den Metadaten darstellt. Ein Parameter kann die folgenden Attribute aufweisen: pdIn, , pdOut, pdRetval, , pdOptionalund pdHasDefault. Diese stellen [In], [Out], [retval], [optional] und einen Standardparameter dar. Diese Attribute werden von verschiedenen Interoperabilitätsdiensten verwendet.
- culture
- CultureInfo
Eine Instanz, die zum Steuern der CultureInfo Koersion von Typen verwendet wird. Wandelt beispielsweise eine Zeichenfolge, culture die 1000 darstellt, in einen Double Wert um, da 1000 durch verschiedene Kulturen unterschiedlich dargestellt wird. Wenn dieser Parameter lautet null, wird der CultureInfo für den aktuellen Thread verwendete.
- namedParameters
- String[]
Ein Zeichenfolgenarray mit Parametern.
Gibt zurück
Das angegebene Element.
- Attribute
Ausnahmen
Für ein Feld setwird mehr als ein Argument angegeben.
Das Feld oder die Eigenschaft kann nicht gefunden werden.
Die Methode kann nicht gefunden werden.
Ein privates Mitglied wird ohne die erforderliche Aufgerufen ReflectionPermission.
Beispiele
Im folgenden Beispiel wird der Wert der Now Eigenschaft abgerufen.
using System;
using System.Reflection;
public class MainClass
{
public static void Main(string[] args)
{
Type tDate = typeof(System.DateTime);
Object result = tDate.InvokeMember("Now",
BindingFlags.GetProperty, null, null, new Object[0]);
Console.WriteLine(result.ToString());
}
}
Imports System.Reflection
Public Class MainClass
Public Overloads Shared Sub Main(ByVal args() As String)
Dim tDate As Type = GetType(System.DateTime)
Dim result As [Object] = tDate.InvokeMember("Now", _
BindingFlags.GetProperty, Nothing, Nothing, New [Object](-1) {})
Console.WriteLine(result.ToString())
End Sub
End Class
Hinweise
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.
Eine Methode wird aufgerufen, wenn die Anzahl der Parameter in der Methodendeklaration der Anzahl der Argumente in der angegebenen Argumentliste entspricht, und der Typ der einzelnen Argumente kann vom Ordner in den Typ des Parameters konvertiert werden.
Hinweis
Das Array von Parametermodifizierern, die an die InvokeMember Methode übergeben werden, muss einen einzelnen Parametermodifizierer enthalten. Nur der erste Parametermodifizierer wird berücksichtigt, wenn ermittelt wird, welches Argument durch Verweis übergeben werden muss, wenn com verfügbar gemacht wird.
Der Sammelband findet alle übereinstimmenden Methoden gemäß dem angeforderten Bindungstyp (BindingFlags.InvokeMethod, GetPropertiesusw.). 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, und die Barrierefreiheit wird zu diesem Zeitpunkt überprüft. Die Suche kann steuern, welche Gruppe von Methoden anhand des Barrierefreiheitsattributs gesucht wird, das der Methode zugeordnet ist. BindToMethod wählt die methode aus, die aufgerufen werden soll. Der Standardbinder wählt die spezifischste Übereinstimmung aus.
Zugriffsbeschränkungen werden für voll vertrauenswürdigen Code ignoriert. Das heißt, auf private Konstruktoren, Methoden, Felder und Eigenschaften kann über Spiegelung zugegriffen und aufgerufen werden, wenn der Code vollständig vertrauenswürdig ist.