TypeBuilder.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 poskytovat nejpřesnější shodu se zadaným seznamem argumentů v rámci omezení zadaných vazeb a vyvolání atributů.
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);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)]
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);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)]
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);
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);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)>]
override this.InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> obj
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)>]
override this.InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> obj
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 to být konstruktor, metoda, vlastnost nebo pole. Je nutné zadat vhodný atribut vyvolání. Všimněte si, že je možné vyvolat výchozí člen třídy předáním prázdného řetězce jako název člena.
- invokeAttr
- BindingFlags
Atribut vyvolání To musí být bit příznak z BindingFlags.
- binder
- Binder
Objekt, který umožňuje vazbu, převod typů argumentů, vyvolání členů a načtení MemberInfo objektů pomocí reflexe. Pokud je nullpořadač , použije se výchozí pořadač. Viz Binder.
- target
- Object
Objekt, na kterém se má vyvolat zadaný člen. Pokud je člen statický, bude tento parametr ignorován.
- args
- Object[]
Seznam argumentů Toto je pole objektů, které obsahuje číslo, pořadí a typ parametrů člena, které se mají vyvolat. Pokud neexistují žádné parametry, neměly by mít hodnotu null.
- modifiers
- ParameterModifier[]
Pole se stejnou délkou jako args s prvky, které představují atributy přidružené k argumentům člena, který má být vyvolán. Parametr má přidružené atributy v metadatech. Používají je různé služby interoperability. Další podrobnosti najdete v specifikacích metadat.
- culture
- CultureInfo
Instance CultureInfo sloužící k řízení převodu typů. Pokud je tato hodnota null, CultureInfo použije se pro aktuální vlákno. (Mějte na paměti, že to je nezbytné k převodu řetězce, který představuje hodnotu 1000 na hodnotu Double, protože 1000 je reprezentováno odlišně různými jazykovými verzemi.)
- namedParameters
- String[]
Každý parametr v namedParameters poli získá hodnotu v odpovídajícím prvku pole args . Pokud je délka args větší než délka , předají se zbývající hodnoty argumentů namedParametersv pořadí.
Návraty
Vrátí vrácenou hodnotu vyvolaného členu.
- Atributy
Výjimky
Tato metoda není v současné době podporována pro neúplné typy.
Poznámky
Metoda bude vyvolána, pokud se počet parametrů v deklaraci metody rovná počtu argumentů v zadaném seznamu argumentů a typ každého argumentu lze převést pořadačem na typ parametru.
Pořadač najde všechny odpovídající metody. Tyto metody jsou nalezeny na základě typu požadované vazby (BindingFlags.InvokeMethod, 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. Po výběru metody se vyvolá. Přístupnost je v tomto okamžiku zaškrtnutá. Hledání může řídit, která sada metod se prohledá na základě atributu usnadnění přidruženého k metodě. Metoda IBinder.BindToMethod je zodpovědná za výběr metody, která se má vyvolat. Výchozí pořadač vybere nejpřesnější shodu.
Note
Omezení přístupu se ignorují pro plně důvěryhodný kód. To znamená, že k soukromým konstruktorům, metodám, polím a vlastnostem lze přistupovat a vyvolat pomocí reflexe vždy, když je kód plně důvěryhodný.
Tato metoda se v současné době nepodporuje. Typ můžete načíst pomocí Type.GetType nebo Assembly.GetType použít reflexi načteného typu.