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 einen angegebenen Member 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);
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);
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 Members.
- invokeAttr
- BindingFlags
Eines der BindingFlags-Aufrufattribute. Der invokeAttr
-Parameter kann ein Konstruktor, eine Methode, eine Eigenschaft oder ein Feld sein. Es muss ein geeignetes Aufrufattribut angegeben werden. Rufen Sie den Standardmember einer Klasse auf, indem Sie die leere Zeichenfolge ("") als Name des Members übergeben.
- binder
- Binder
Eines der BindingFlags-Bitflags. Implementiert Binder, und enthält auf diese Methode bezogene Eigenschaften.
- target
- Object
Das Objekt, für das der angegebene Member aufgerufen werden soll. Für statische Member wird dieser Parameter ignoriert.
- args
- Object[]
Ein Array von Objekten, das Anzahl, Reihenfolge und Typ der Parameter des aufzurufenden Members enthält. Dies ist ein leeres Array, wenn keine Parameter vorhanden sind.
- modifiers
- ParameterModifier[]
Ein Array von ParameterModifier-Objekten. Das Array hat dieselbe Länge wie der args
-Parameter und stellt die Argumentattribute des aufgerufenen Members in den Metadaten dar. Ein Parameter kann die folgenden Attribute aufweisen: pdIn
, pdOut
, pdRetval
, pdOptional
und pdHasDefault
. Diese stellen [In], [Out], [retval], [optional] und einen Standardparameter dar. Diese Attribute werden von verschiedenen Interoperabilitätsdiensten verwendet.
- culture
- CultureInfo
Eine Instanz von CultureInfo für die Steuerung der Umwandlung von Typen. culture
konvertiert z. B. eine Zeichenfolge, mit der 1000 dargestellt wird, in einen Double-Wert, da 1000 in verschiedenen Kulturen unterschiedlich dargestellt wird. Wenn dieser Parameter null
ist, wird die CultureInfo für den aktuellen Thread verwendet.
- namedParameters
- String[]
Dies ist ein Zeichenfolgenarray von Parametern.
Gibt zurück
Der angegebene Member.
Ausnahmen
Für ein Feld set
sind mehrere Argumente angegeben.
Das Feld oder die Eigenschaft wurde nicht gefunden.
Die Methode kann nicht gefunden werden.
Ein privater Member wurde ohne die erforderliche ReflectionPermission aufgerufen.
Beispiele
Im folgenden Beispiel wird der Wert der Now Eigenschaft abgerufen.
#using <System.DLL>
using namespace System;
using namespace System::Reflection;
#define NULL 0
void main()
{
Type^ tDate = Type::GetType( L"System.DateTime" );
Object^ result = tDate->InvokeMember( L"Now", BindingFlags::GetProperty, nullptr, NULL, gcnew array<Object^>(0) );
Console::WriteLine( result->ToString() );
}
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 zugänglich sein und mit der angegebenen Argumentliste unter den Einschränkungen des angegebenen Binders und der Aufrufattribute die spezifischste Übereinstimmung bereitstellen.
Eine Methode wird aufgerufen, wenn die Anzahl der Parameter in der Methodendeklaration die Anzahl der Argumente in der angegebenen Argumentliste entspricht, und der Typ der einzelnen Argumente kann durch den Ordner in den Typ des Parameters konvertiert werden.
Hinweis
Das Array der an die InvokeMember Methode übergebenen Parametermodifizierer muss einen einzelnen Parameter modifier enthalten. Nur der erste Parametermodifizierer wird berücksichtigt, wenn bestimmt wird, welche Argumente durch Verweis übergeben werden müssen, wenn com verfügbar gemacht wird.
Der Binder findet alle übereinstimmenden Methoden gemäß dem typ der angeforderten Bindung (BindingFlags.InvokeMethod, GetPropertiesusw.). Der Satz von Methoden wird nach dem Namen, der Anzahl der Argumente und einer Reihe von Suchmodifizierern gefiltert, die im Ordner definiert sind. Nachdem die Methode ausgewählt wurde, wird sie aufgerufen, und die Barrierefreiheit wird an diesem Punkt überprüft. Die Suche kann steuern, welche Gruppe von Methoden basierend auf dem Barrierefreiheitsattribute, das der Methode zugeordnet ist, durchsucht wird. BindToMethod wählt die methode aus, die aufgerufen werden soll. Der Standardbinder wählt die spezifischste Übereinstimmung aus.
Zugriffseinschränkungen werden für voll vertrauenswürdigen Code ignoriert. Das heißt, private Konstruktoren, Methoden, Felder und Eigenschaften können über Spiegelung aufgerufen werden, wenn der Code vollständig vertrauenswürdig ist.