IReflect.InvokeMember Metoda

Definicja

Wywołuje określony element członkowski.

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

Nazwa elementu członkowskiego do znalezienia.

invokeAttr
BindingFlags

BindingFlags Jeden z atrybutów wywołania. Parametr invokeAttr może być konstruktorem, metodą, właściwością lub polem. Należy określić odpowiedni atrybut wywołania. Wywołaj domyślną składową klasy, przekazując pusty ciąg ("") jako nazwę elementu członkowskiego.

binder
Binder

BindingFlags Jedna z flag bitów. Implementuje Binderelement , zawierający właściwości powiązane z tą metodą.

target
Object

Obiekt, na którym ma być wywoływany określony element członkowski. Ten parametr jest ignorowany dla statycznych elementów członkowskich.

args
Object[]

Tablica obiektów, która zawiera liczbę, kolejność i typ parametrów elementu członkowskiego do wywołania. Jest to pusta tablica, jeśli nie ma parametrów.

modifiers
ParameterModifier[]

Tablica ParameterModifier obiektów. Ta tablica ma taką samą długość jak args parametr reprezentujący atrybuty argumentu wywoływanego elementu członkowskiego w metadanych. Parametr może mieć następujące atrybuty: pdIn, , pdOutpdRetval, pdOptionali pdHasDefault. Reprezentują one odpowiednio parametr [In], [Out], [retval], [optional] i parametr domyślny. Te atrybuty są używane przez różne usługi współdziałania.

culture
CultureInfo

Wystąpienie używane do nadzorowania CultureInfo przymusu typów. Na przykład culture konwertuje ciąg reprezentujący 1000 na Double wartość, ponieważ 1000 jest reprezentowane inaczej przez różne kultury. Jeśli ten parametr ma nullwartość , CultureInfo używany jest parametr dla bieżącego wątku.

namedParameters
String[]

Tablica ciągów parametrów.

Zwraca

Określony element członkowski.

Wyjątki

Dla pola setokreślono więcej niż jeden argument .

Nie można odnaleźć pola lub właściwości.

Nie można odnaleźć metody .

Prywatny element członkowski jest wywoływany bez niezbędnego elementu ReflectionPermission.

Przykłady

Poniższy przykład uzyskuje wartość Now właściwości .

#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

Uwagi

Wywoływana metoda musi być dostępna i zapewnić najbardziej specyficzne dopasowanie z określoną listą argumentów zgodnie z ograniczeniami określonego powiązania i atrybutów wywołania.

Metoda jest wywoływana, jeśli liczba parametrów w deklaracji metody jest równa liczbie argumentów na określonej liście argumentów, a typ każdego argumentu można przekonwertować przez binder na typ parametru.

Uwaga

Tablica modyfikatorów parametrów przekazanych do InvokeMember metody musi zawierać jeden modyfikator parametrów. Tylko pierwszy modyfikator parametrów jest brany pod uwagę podczas określania, który argument musi zostać przekazany przez odwołanie w przypadku uwidocznienia modelu COM.

Binder znajduje wszystkie pasujące metody zgodnie z typem żądanego powiązania (BindingFlags.InvokeMethod, GetPropertiesitd.). Zestaw metod jest filtrowany według nazwy, liczby argumentów i zestawu modyfikatorów wyszukiwania zdefiniowanych w binderze. Po wybraniu metody jest wywoływana, a dostępność jest sprawdzana w tym momencie. Wyszukiwanie może kontrolować, który zestaw metod jest przeszukiwany na podstawie atrybutu ułatwień dostępu skojarzonego z metodą . BindToMethod wybiera metodę, która ma zostać wywołana. Domyślny binder wybiera najbardziej konkretne dopasowanie.

Ograniczenia dostępu są ignorowane dla w pełni zaufanego kodu. Oznacza to, że dostęp do prywatnych konstruktorów, metod, pól i właściwości można uzyskiwać i wywoływać za pośrednictwem odbicia za każdym razem, gdy kod jest w pełni zaufany.

Dotyczy

Zobacz też