IReflect.InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]) Метод

Определение

Вызывает заданный элемент.

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

Параметры

name
String

Имя искомого элемента.

invokeAttr
BindingFlags

Один из атрибутов вызова BindingFlags. Параметр invokeAttr может быть конструктором, методом, свойством или полем. Необходимо указать подходящий атрибут вызова. Чтобы вызвать стандартный элемент класса, передайте в качестве имени элемента пустую строку ("").

binder
Binder

Один из битовых флагов BindingFlags. Реализует класс Binder, содержащий свойства, связанные с этим методом.

target
Object

Объект, для которого следует вызвать указанный член. Для статических элементов этот параметр не обрабатывается.

args
Object[]

Массив объектов, содержащих число, порядок и тип параметров вызываемого элемента. Если параметров нет, этот массив пуст.

modifiers
ParameterModifier[]

Массив объектов ParameterModifier. Массив такой же длины, что и параметр args, предоставляющий атрибуты аргументов вызываемого члена в виде метаданных. Параметр может иметь следующие атрибуты: pdIn, pdOut, pdRetval, pdOptional и pdHasDefault. Эти значения представляют, соответственно, параметры [In], [Out], [retval], [optional] и стандартный параметр. Эти атрибуты используются различными службами взаимодействия.

culture
CultureInfo

Экземпляр объекта CultureInfo , используемого для управления приведением типов. Например, параметр culture преобразует строку, которая представляет число 1000, в значение типа Double, поскольку в разных культурах число 1000 может быть представлено по-разному. Если этот параметр имеет значение null, для текущего потока используется объект CultureInfo.

namedParameters
String[]

Строковый массив параметров.

Возвращаемое значение

Object

Заданный член.

Исключения

Для процедуры set поля задано более одного аргумента.

Невозможно найти поле или свойство.

Не удается найти метод.

Закрытый элемент вызван без необходимого разрешения ReflectionPermission.

Примеры

В следующем примере получается значение Now Свойства.

#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

Комментарии

Вызываемый метод должен быть доступен и обеспечивать наиболее точное соответствие заданному списку аргументов с учетом ограничений заданного модуля привязки и атрибутов вызова.

Метод вызывается, если количество параметров в объявлении метода равно количеству аргументов в указанном списке аргументов, и тип каждого аргумента может быть преобразован связывателем в тип параметра.

Примечание

Массив модификаторов параметров, переданный в InvokeMember метод, должен содержать модификатор одного параметра. При определении аргумента, который должен быть передан по ссылке при предоставлении модели COM, учитывается только первый модификатор параметра.

Связыватель находит все соответствующие методы в соответствии с требуемым типом привязки ( BindingFlags.InvokeMethod , GetProperties и т. д.). Набор методов фильтруется по имени, числу аргументов и набору модификаторов поиска, определенных в связывателе. После выбора метода вызывается метод, и в этот момент проверяется доступность. Поиск может контролировать, какой набор методов ищется в зависимости от атрибута доступности, связанного с методом. BindToMethod выбирает вызываемый метод. Связыватель по умолчанию выбирает наиболее конкретное соответствие.

Ограничения доступа игнорируются для полностью доверенного кода. Таким образом, закрытые конструкторы, методы, поля и свойства могут быть доступны и вызываться посредством отражения всякий раз, когда код полностью надежен.

Применяется к

См. также раздел