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ý č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ý.