Sdílet prostřednictvím


IReflect.InvokeMember Metoda

Definice

Vyvolá zadaný člen.

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);
[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 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 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);
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);
[<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)>]
abstract member 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)>]
abstract member InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> obj
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

Jméno člena, který chcete najít.

invokeAttr
BindingFlags

Jeden z BindingFlags atributů vyvolání Parametrem invokeAttr může být konstruktor, metoda, vlastnost nebo pole. Je nutné zadat vhodný atribut vyvolání. Vyvolá výchozí člen třídy předáním prázdného řetězce ("") jako názvu člena.

binder
Binder

Jeden z BindingFlags bitových příznaků. Implements 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ů obsahujících číslo, pořadí a typ parametrů člena, které se mají vyvolat. Toto je prázdné pole, pokud neexistují žádné parametry.

modifiers
ParameterModifier[]

Pole ParameterModifier objektů. Toto pole má stejnou délku args jako parametr, který představuje atributy argumentů vyvolaných členů 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řevodu typů. Například culture převede řetězec, který představuje 1 000 na Double hodnotu, protože 1000 je reprezentován odlišně různými jazykovými verzemi. Pokud je nulltento parametr , CultureInfo použije se pro aktuální vlákno.

namedParameters
String[]

Řetězcové pole parametrů.

Návraty

Zadaný člen.

Atributy

Výjimky

Pro pole setje zadáno více než jeden argument .

Pole nebo vlastnost nelze najít.

Metodu nelze najít.

Soukromý člen je vyvolán bez nutnosti ReflectionPermission.

Příklady

Následující příklad získá hodnotu Now vlastnosti.

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 poskytovat nejpřesnější shodu se zadaným seznamem argumentů v rámci omezení zadaných vazeb 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 lze převést pořadačem na typ parametru.

Poznámka:

Pole modifikátorů parametrů předaných InvokeMember metodě musí obsahovat jeden modifikátor parametrů. Při určování, který argument musí být předán odkazem při zveřejnění modelu COM, se považuje pouze první modifikátor parametru.

Pořadač najde všechny odpovídající metody v souladu s typem požadované vazby (BindingFlags.InvokeMethodatd GetProperties.). 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á a v tomto okamžiku se zkontroluje přístupnost. Hledání může řídit, která sada metod je prohledána na základě atributu usnadnění přidruženého k metodě. BindToMethod vybere metodu, která se má vyvolat. Výchozí pořadač vybere nejpřesnější shodu.

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 reflexí, kdykoli je kód plně důvěryhodný.

Platí pro

Viz také