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 der Anzahl von Argumenten in der angegebenen Argumentliste entspricht und der Typ der einzelnen Argumente vom Binder in den Typ des Parameters konvertiert werden kann.
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 als Verweis übergeben werden muss, wenn es für COM verfügbar gemacht wird.
Der Binder findet alle übereinstimmenden Methoden entsprechend 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 Binder definiert sind. Nachdem die Methode ausgewählt wurde, wird sie aufgerufen, und die Barrierefreiheit wird an diesem Punkt überprüft. Die Suche kann basierend auf dem der Methode zugeordneten Barrierefreiheitsattribut steuern, welcher Satz von Methoden 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 vollständig vertrauenswürdigen Code ignoriert. Das heißt, private Konstruktoren, Methoden, Felder und Eigenschaften können über Reflektion aufgerufen und aufgerufen werden, wenn der Code vollständig vertrauenswürdig ist.