Sdílet prostřednictvím


IReflect.InvokeMember Metoda

Definice

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, pdOptionala 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 nulltento parametr , CultureInfo použije se pro aktuální vlákno.

namedParameters
String[]

Pole řetězců parametrů.

Návraty

Zadaný člen.

Výjimky

Pro pole setje 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ý.

Platí pro

Viz také