IReflect.InvokeMember Methode

Definition

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.

Gilt für:

Weitere Informationen