Sdílet prostřednictvím


TypeDelegator.InvokeMember Metoda

Definice

Vyvolá zadaný člen. Metoda, která má být vyvolána, musí být přístupná a poskytnout nejkonvlastnější shodu se zadaným seznamem argumentů v rámci omezení zadaného pořadače a atributů volání.

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

Název člena, který se má vyvolat. Může se jednat o konstruktor, metodu, vlastnost nebo pole. Pokud je předán prázdný řetězec (""), je vyvolán výchozí člen.

invokeAttr
BindingFlags

Atribut vyvolání. Musí to být jedna z následujících BindingFlags hodnot: InvokeMethod, , CreateInstance, Static, SetFieldGetField, GetProperty, nebo SetProperty. Musí být zadán vhodný atribut vyvolání. Pokud má být vyvolán statický člen, Static musí být nastaven příznak .

binder
Binder

Objekt, který umožňuje vazbu, vynucování typů argumentů, vyvolání členů a načtení MemberInfo objektů prostřednictvím reflexe. Pokud binder je null, použije se výchozí pořadač. Viz třída Binder.

target
Object

Objekt, na kterém se má vyvolat zadaný člen.

args
Object[]

Pole typu Object , které obsahuje číslo, pořadí a typ parametrů člena, který má být vyvolán. Pokud args obsahuje neinicializovaný Objectobjekt , považuje se za prázdný, který lze s výchozím pořadačem rozšířit na hodnotu 0, 0,0 nebo řetězec.

modifiers
ParameterModifier[]

Pole typu ParameterModifier , který má stejnou délku jako args, s prvky, které představují atributy spojené s argumenty členu, který má být vyvolán. Parametr má přidružené atributy v podpisu člena. Pro ByRef použijte ParameterModifier.ByRef, a pro žádný použijte .ParameterModifier.None Výchozí pořadač u nich provede přesnou shodu. Atributy jako In a InOut se ve vazbě nepoužívají a lze je zobrazit pomocí ParameterInfo.

culture
CultureInfo

Instance CultureInfo slouží k řízení převodu typů. To je nezbytné například k převodu řetězce, který představuje hodnotu 1000, protože Double hodnota 1000 je reprezentována různými jazykovými verzemi. Pokud culture je null, CultureInfo použije se CultureInfo pro aktuální vlákno .

namedParameters
String[]

Pole řetězců obsahující názvy parametrů, které se shodují, počínaje od nuly elementu, s polem args . V poli nesmí být žádné díry. Pokud args. Length je větší než namedParameters. Length, zbývající parametry jsou vyplněny v pořadí.

Návraty

Představující Object návratovou hodnotu vyvolaného členu.

Poznámky

Metoda bude vyvolána, pokud jsou splněny obě následující podmínky:

  • Počet parametrů v deklaraci metody se rovná počtu argumentů v zadaném seznamu argumentů (pokud nejsou u členu definovány výchozí argumenty).

  • Typ každého argumentu může být převeden pořadačem na typ parametru.

Pořadač najde všechny odpovídající metody. Tyto metody se nacházejí na základě požadovaného typu vazby (BindingFlags.MethodInvoke, BindingFlags.GetPropertiesatd.). Sada metod je filtrována podle názvu, počtu argumentů a sady modifikátorů vyhledávání definovaných v pořadači.

Jakmile vyberete metodu, bude vyvolána. V tomto okamžiku je zaškrtnuté políčko Přístupnost. Vyhledávání může řídit, která sada metod se prohledá na základě atributu přístupnosti přidruženého k metodě. Metoda Binder.BindToMethod zodpovídá za výběr metody, která se má vyvolat. Výchozí pořadač vybere nejkonseifnější shodu.

Poznámka

Omezení přístupu jsou ignorována pro plně důvěryhodný kód. To znamená, že k soukromým konstruktorům, metodám, polím a vlastnostem je možné přistupovat a vyvolávat pomocí reflexe vždy, když je kód plně důvěryhodný.

InvokeMember V současné době provádí sémantiku reflexe rozhraní Microsoft .NET Framework pro každý typ objektu.

Pokud je člen určený názvem pole a BindingFlags.GetField příznak je nastaven na invokeAttr, args pole určuje prvky, jejichž hodnoty mají být vráceny. Například následující volání prostřednictvím Type objektu t vrátí hodnotu prvního prvku pole řetězců MyArray, který je členem volajícího objektu:

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

Můžete použít InvokeMember k nastavení jednoho nebo více prvků pole členů. Všechny prvky jsou nastaveny na stejnou hodnotu. Pole args musí být naformátované takto:

{index1,  
    index2,, value}  

Například pro nastavení prvního člena MyArray z předchozího příkladu je syntaxe následující:

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

Platí pro

Viz také