TypeDelegator.InvokeMember Metoda

Definicja

Wywołuje określony element członkowski. Wywoływana metoda musi być dostępna i zapewnić najbardziej specyficzne dopasowanie z określoną listą argumentów w ramach ograniczeń określonych atrybutów powiązania i wywołania.

public:
 override 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 override 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 override 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);
override this.InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> obj
Public Overrides 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

Parametry

name
String

Nazwa elementu członkowskiego do wywołania. Może to być konstruktor, metoda, właściwość lub pole. Jeśli zostanie przekazany pusty ciąg (""), zostanie wywołany domyślny element członkowski.

invokeAttr
BindingFlags

Atrybut wywołania. Musi to być jeden z następujących elementów BindingFlags : InvokeMethod, , StaticCreateInstance, GetField, SetField, GetPropertylub SetProperty. Należy określić odpowiedni atrybut wywołania. Jeśli statyczny element członkowski ma być wywoływany, należy ustawić flagę Static .

binder
Binder

Obiekt, który umożliwia powiązanie, wymuszanie typów argumentów, wywołanie elementów członkowskich i pobieranie obiektów za pośrednictwem odbicia MemberInfo . Jeśli binder jest to null, jest używany domyślny binder. Zobacz: .

target
Object

Obiekt, na którym ma wywołać określony element członkowski.

args
Object[]

Tablica typu Object zawierająca liczbę, kolejność i typ parametrów elementu członkowskiego do wywołania. Jeśli args zawiera niezainicjowany Objectelement , jest traktowany jako pusty, który z domyślnym binderem można rozszerzyć na 0, 0,0 lub ciąg.

modifiers
ParameterModifier[]

Tablica typu ParameterModifier o tej samej długości co args, z elementami reprezentującymi atrybuty skojarzone z argumentami elementu członkowskiego do wywołania. Parametr zawiera atrybuty skojarzone z nim w podpisie elementu członkowskiego. W przypadku elementu ByRef użyj parametru , a w przypadku braków użyj ParameterModifier.ByRefpolecenia ParameterModifier.None. Domyślny binder dokładnie pasuje do tych elementów. Atrybuty, takie jak In i InOut nie są używane w powiązaniu, i można je wyświetlić przy użyciu polecenia ParameterInfo.

culture
CultureInfo

Wystąpienie CultureInfo używane do zarządzania przymusem typów. Jest to konieczne, na przykład, aby przekonwertować ciąg reprezentujący 1000 na Double wartość, ponieważ 1000 jest reprezentowane inaczej przez różne kultury. Jeśli culture jest to null, CultureInfo jest używany element dla bieżącego wątku CultureInfo .

namedParameters
String[]

Tablica ciągów zawierająca nazwy parametrów, które pasują, zaczynając od zera elementu, z tablicą args . Tablica nie może zawierać żadnych otworów. Jeśli args. Length wartość jest większa niż namedParameters. Length, pozostałe parametry są wypełniane w kolejności.

Zwraca

Reprezentująca Object zwracaną wartość wywoływanego elementu członkowskiego.

Uwagi

Metoda zostanie wywołana, jeśli oba następujące warunki są spełnione:

  • Liczba parametrów w deklaracji metody jest równa liczbie argumentów na określonej liście argumentów (chyba że argumenty domyślne są zdefiniowane na elemencie członkowskim).

  • Typ każdego argumentu można przekonwertować przez binder na typ parametru.

Binder znajdzie wszystkie pasujące metody. Te metody można znaleźć na podstawie typu żądanego powiązania (BindingFlags.MethodInvokeitd BindingFlags.GetProperties.). Zestaw metod jest filtrowany według nazwy, liczby argumentów i zestawu modyfikatorów wyszukiwania zdefiniowanych w binderze.

Po wybraniu metody zostanie wywołana. Dostępność jest sprawdzana w tym momencie. Wyszukiwanie może kontrolować, który zestaw metod jest wyszukiwany na podstawie atrybutu ułatwień dostępu skojarzonego z metodą. Metoda Binder.BindToMethod jest odpowiedzialna za wybranie metody do wywołania. Domyślny binder wybiera najbardziej specyficzne dopasowanie.

Uwaga

Ograniczenia dostępu są ignorowane dla w pełni zaufanego kodu. Oznacza to, że można uzyskiwać dostęp do prywatnych konstruktorów, metod, pól i właściwości przy użyciu odbicia za każdym razem, gdy kod jest w pełni zaufany.

InvokeMember Obecnie wykonuje semantyka odbicia .NET Framework firmy Microsoft dla każdego typu obiektu.

Jeśli element członkowski określony przez nazwę jest tablicą, a BindingFlags.GetField flaga jest ustawiona na invokeAttr, args tablica określa elementy, których wartości mają być zwracane. Na przykład następujące wywołanie za pomocą Type obiektu t zwraca wartość pierwszego elementu tablicy ciągów MyArray, która jest elementem członkowskim obiektu wywołującego:

String ret = (String) t.InvokeMember ("MyArray", BindingFlags.GetField, null, this, new Variant[]{0});

Za pomocą InvokeMember polecenia można ustawić co najmniej jeden element tablicy składowej. Wszystkie elementy są ustawione na tę samą wartość. Tablica args musi być sformatowana w następujący sposób:

{index1,  
    index2,, value}  

Na przykład aby ustawić pierwszy element członkowski myArray z poprzedniego przykładu, składnia jest następująca:

t.InvokeMember ("MyArray", BindingFlags.SetField, null, this, new  
    Variant[]{0,"Updated"});  

Dotyczy

Zobacz też