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

Object

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.

Gilt für:

Siehe auch