IReflect.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ého člena.
public:
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 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 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);
abstract member InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> obj
Public 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á najít.
- invokeAttr
- BindingFlags
Jeden z BindingFlags atributů vyvolání. Parametrem invokeAttr
může být konstruktor, metoda, vlastnost nebo pole. Musí být zadán vhodný atribut vyvolání. Vyvoláním výchozího člena třídy předáním prázdného řetězce ("") jako názvu člena.
- binder
- Binder
Jeden z bitových BindingFlags příznaků. Implementuje Binder, obsahující vlastnosti související s touto metodou.
- target
- Object
Objekt, na kterém se má vyvolat zadaný člen. Tento parametr je ignorován pro statické členy.
- args
- Object[]
Pole objektů, které obsahují číslo, pořadí a typ parametrů člena, který má být vyvolán. Pokud neexistují žádné parametry, jedná se o prázdné pole.
- modifiers
- ParameterModifier[]
Pole ParameterModifier objektů. Toto pole má stejnou délku args
jako parametr, který představuje atributy argumentu vyvolaného člena v metadatech. Parametr může mít následující atributy: pdIn
, pdOut
, pdRetval
, pdOptional
a pdHasDefault
. Představují [In], [Out], [retval], [optional] a výchozí parametr. Tyto atributy používají různé služby interoperability.
- culture
- CultureInfo
Instance CultureInfo sloužící k řízení přinucování typů. Například převede řetězec, culture
který představuje hodnotu 1000, na Double hodnotu, protože hodnota 1000 je reprezentována různými jazykovými verzemi. Pokud je null
tento parametr , CultureInfo použije se pro aktuální vlákno.
- namedParameters
- String[]
Pole řetězců parametrů.
Návraty
Zadaný člen.
Výjimky
Pro pole set
je zadáno více než jeden argument .
Pole nebo vlastnost nelze najít.
Metoda nebyla nalezena.
Privátní člen je vyvolán bez potřebného ReflectionPermission.
Příklady
Následující příklad získá hodnotu Now vlastnosti.
#using <System.DLL>
using namespace System;
using namespace System::Reflection;
#define NULL 0
void main()
{
Type^ tDate = Type::GetType( L"System.DateTime" );
Object^ result = tDate->InvokeMember( L"Now", BindingFlags::GetProperty, nullptr, NULL, gcnew array<Object^>(0) );
Console::WriteLine( result->ToString() );
}
using System;
using System.Reflection;
public class MainClass
{
public static void Main(string[] args)
{
Type tDate = typeof(System.DateTime);
Object result = tDate.InvokeMember("Now",
BindingFlags.GetProperty, null, null, new Object[0]);
Console.WriteLine(result.ToString());
}
}
Imports System.Reflection
Public Class MainClass
Public Overloads Shared Sub Main(ByVal args() As String)
Dim tDate As Type = GetType(System.DateTime)
Dim result As [Object] = tDate.InvokeMember("Now", _
BindingFlags.GetProperty, Nothing, Nothing, New [Object](-1) {})
Console.WriteLine(result.ToString())
End Sub
End Class
Poznámky
Metoda, která má být vyvolána, musí být přístupná a musí poskytovat nejkonvlastnější shodu se zadaným seznamem argumentů pod omezeními zadaného pořadače a vyvolání atributů.
Metoda je 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 může být převeden pořadačem na typ parametru.
Poznámka
Pole modifikátorů parametrů předaných InvokeMember metodě musí obsahovat jeden modifikátor parametru. Při určování argumentu, který má být předán odkazem při vystavení modelu COM, se zvažuje pouze první modifikátor parametru.
Pořadač najde všechny odpovídající metody v souladu s typem požadované vazby (BindingFlags.InvokeMethod, GetPropertiesatd.). Sada metod je filtrována podle názvu, počtu argumentů a sady modifikátorů hledání definovaných v pořadači. Po výběru metody se vyvolá a v tomto okamžiku se zkontroluje přístupnost. Hledání může řídit, která sada metod se prohledá na základě atributu přístupnosti přidruženého k metodě. BindToMethod vybere metodu, která se má vyvolat. Výchozí pořadač vybere nejkonifernější shodu.
Omezení přístupu se u plně důvěryhodného kódu ignorují. To znamená, že k soukromým konstruktorům, metodám, polím a vlastnostem je možné přistupovat a vyvolat je prostřednictvím reflexe vždy, když je kód plně důvěryhodný.