Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ruft einen angegebenen Member auf.
Namespace: System.Reflection
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
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
'Usage
Dim instance As IReflect
Dim name As String
Dim invokeAttr As BindingFlags
Dim binder As Binder
Dim target As Object
Dim args As Object()
Dim modifiers As ParameterModifier()
Dim culture As CultureInfo
Dim namedParameters As String()
Dim returnValue As Object
returnValue = instance.InvokeMember(name, invokeAttr, binder, target, args, modifiers, culture, namedParameters)
Object InvokeMember (
string name,
BindingFlags invokeAttr,
Binder binder,
Object target,
Object[] args,
ParameterModifier[] modifiers,
CultureInfo culture,
string[] namedParameters
)
Object^ InvokeMember (
String^ name,
BindingFlags invokeAttr,
Binder^ binder,
Object^ target,
array<Object^>^ args,
array<ParameterModifier>^ modifiers,
CultureInfo^ culture,
array<String^>^ namedParameters
)
Object InvokeMember (
String name,
BindingFlags invokeAttr,
Binder binder,
Object target,
Object[] args,
ParameterModifier[] modifiers,
CultureInfo culture,
String[] namedParameters
)
function InvokeMember (
name : String,
invokeAttr : BindingFlags,
binder : Binder,
target : Object,
args : Object[],
modifiers : ParameterModifier[],
culture : CultureInfo,
namedParameters : String[]
) : Object
Parameter
- name
Der Name des zu suchenden Members.
- invokeAttr
Einer der BindingFlags-Aufrufattribute. Der invokeAttr-Parameter kann ein Konstruktor, eine Methode, eine Eigenschaft oder ein Feld sein. Es muss ein geeignetes Attribut für den Aufruf angegeben werden. Rufen Sie den Standardmember einer Klasse auf, indem Sie die leere Zeichenfolge ("") als Name des Members übergeben.
- binder
Eines der BindingFlags-Bitflags. Implementiert Binder, und enthält auf diese Methode bezogene Eigenschaften.
- target
Das Objekt, für das der angegebene Member aufgerufen werden soll. Für statische Member wird dieser Parameter ignoriert.
- args
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
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
Eine Instanz von CultureInfo für die Steuerung der Umwandlung von Typen. culture konvertiert z. B. einen String, mit dem 1000 dargestellt wird, in einen Double-Wert, da 1000 in verschiedenen Kulturen unterschiedlich dargestellt wird. Wenn dieser Parameter NULL (Nothing in Visual Basic) ist, wird die CultureInfo für den aktuellen Thread verwendet.
- namedParameters
Ein String-Array von Parametern.
Rückgabewert
Der angegebene Member.
Ausnahmen
| Ausnahmetyp | Bedingung |
|---|---|
invokeAttr ist BindingFlags.CreateInstance, und darüber hinaus wird ein weiteres Bitflag festgelegt. |
|
ArgumentException |
invokeAttr ist nicht BindingFlags.CreateInstance, und name ist NULL (Nothing in Visual Basic). |
ArgumentException |
invokeAttr ist kein Aufrufattribut aus BindingFlags. |
ArgumentException |
invokeAttr gibt sowohl get als auch set für eine Eigenschaft oder ein Feld an. |
ArgumentException |
invokeAttr gibt sowohl ein Feld set als auch eine Invoke-Methode an. Für ein Feld get werden args bereitgestellt. |
ArgumentException |
Für ein Feld set sind mehrere Argumente angegeben. |
Das Feld oder die Eigenschaft kann nicht gefunden werden. |
|
Die Methode kann nicht gefunden werden. |
|
Ein privater Member wurde ohne die erforderliche ReflectionPermission aufgerufen. |
Hinweise
Auf die aufzurufende Methode muss zugegriffen werden können, und sie muss die beste Übereinstimmung mit der angegebenen Argumentliste liefern, wobei die Einschränkungen durch die angegebenen Attribute für Binder und Aufruf berücksichtigt werden.
Ein Methode wird aufgerufen, wenn die Anzahl der Parameter in der Methodendeklaration gleich der Anzahl der Argumente in der angegebenen Argumentliste ist und der Typ jedes Arguments vom Binder in den Typ des Parameters konvertiert werden kann.
Hinweis
Das Array der an InvokeMember übergebenen Parametermodifizierer muss einen einzelnen Parametermodifizierer enthalten. Nur der erste Parametermodizifizierer wird beim Bestimmen des Arguments berücksichtigt, das als Verweis übergeben werden muss, wenn es in COM verfügbar gemacht wird.
Der Binder sucht entsprechend dem angeforderten Bindungstyp (BindingFlags.InvokeMethod, GetProperties usw.) alle übereinstimmenden Methoden. Die Gruppe der Methoden wird nach Name, Anzahl der Argumente und einem im Binder definierten Satz von Suchmodifizierern gefiltert. Nach der Auswahl der Methode wird diese aufgerufen, und der Zugriff wird an dieser Stelle überprüft. Bei der Suche kann anhand des der Methode zugeordneten Zugriffsattributs gesteuert werden, welche Gruppe von Methoden durchsucht wird. Mit BindToMethod wird die aufzurufende Methode ausgewählt. Der Standardbinder wählt die beste Entsprechung aus.
Zugriffsbeschränkungen werden bei vollständig vertrauenswürdigem Code ignoriert. Daher ist das Zugreifen auf und das Aufrufen von privaten Konstruktoren, Methoden, Feldern und Eigenschaften bei vollständig vertrauenswürdigem Code über Reflektion möglich.
Beispiel
Im folgenden Beispiel wird der Wert der Now-Eigenschaft abgerufen.
Imports System
Imports System.Reflection
Imports Microsoft.VisualBasic
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 'Main
End Class 'MainClass
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());
}
}
#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() );
}
import System.*;
import System.Reflection.*;
public class MainClass
{
public static void main(String[] args)
{
Type tDate = Type.GetType("System.DateTime");
Object result = tDate.InvokeMember("Now",
BindingFlags.GetProperty, null, null, new Object[0]);
Console.WriteLine(result.ToString());
} //main
} //MainClass
Plattformen
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
IReflect-Schnittstelle
IReflect-Member
System.Reflection-Namespace
Object
Binder-Klasse
BindingFlags-Enumeration