TypeDelegator.InvokeMember Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
, SetField
GetField
, 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ý Object
objekt , 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.GetProperties
atd.). 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"});