TypeDelegator.InvokeMember Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
, , Static
CreateInstance
, GetField
, SetField
, GetProperty
lub 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 Object
element , 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.ByRef
polecenia 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.MethodInvoke
itd 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"});