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

Определение

Вызывает указанный член.Invokes the specified member. Вызываемый метод должен быть доступен и обеспечивать наиболее точное соответствие заданному списку аргументов с учетом ограничений заданного модуля привязки и атрибутов вызова.The method that is to be invoked must be accessible and provide the most specific match with the specified argument list, under the constraints of the specified binder and invocation attributes.

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

Параметры

name
String

Имя вызываемого члена.The name of the member to invoke. Это может быть конструктор, метод, свойство или поле.This may be a constructor, method, property, or field. Если передается пустая строка (""), вызывается стандартный член.If an empty string ("") is passed, the default member is invoked.

invokeAttr
BindingFlags

Атрибут вызова.The invocation attribute. Атрибут должен быть одним из следующих флагов BindingFlags: InvokeMethod, CreateInstance, Static, GetField, SetField, GetProperty или SetProperty.This must be one of the following BindingFlags : InvokeMethod, CreateInstance, Static, GetField, SetField, GetProperty, or SetProperty. Необходимо указать подходящий атрибут вызова.A suitable invocation attribute must be specified. Для вызова статического члена должен быть установлен флаг Static.If a static member is to be invoked, the Static flag must be set.

binder
Binder

Объект, позволяющий осуществлять привязку, приведение типов аргументов, вызов элементов, а также поиск объектов MemberInfo с помощью отражения.An object that enables the binding, coercion of argument types, invocation of members, and retrieval of MemberInfo objects via reflection. Если значение параметра binder равно null, используется связыватель по умолчанию.If binder is null, the default binder is used. См. раздел Binder.See Binder.

target
Object

Объект, для которого следует вызвать указанный член.The object on which to invoke the specified member.

args
Object[]

Массив объектов типа Object, содержащий число, последовательность и тип параметров, получаемых вызываемым методом.An array of type Object that contains the number, order, and type of the parameters of the member to be invoked. Если параметр args содержит не инициализированный объект Object, он обрабатывается как пустой и может быть преобразован стандартным связывателем в 0, 0,0 или строку.If args contains an uninitialized Object, it is treated as empty, which, with the default binder, can be widened to 0, 0.0 or a string.

modifiers
ParameterModifier[]

Массив типа ParameterModifier такой же длины, как и массив args, элементы которого представляют атрибуты, соответствующие параметрам вызываемого метода.An array of type ParameterModifier that is the same length as args, with elements that represent the attributes associated with the arguments of the member to be invoked. С параметром связаны атрибуты в сигнатуре члена.A parameter has attributes associated with it in the member's signature. Для параметра ByRef следует использовать параметр ParameterModifier.ByRef, а при отсутствии параметра — параметр ParameterModifier.None.For ByRef, use ParameterModifier.ByRef, and for none, use ParameterModifier.None. Связыватель по умолчанию выбирает точное совпадение.The default binder does exact matching on these. Такие атрибуты, как In и InOut, не используются в привязке и могут быть просмотрены с помощью свойства ParameterInfo.Attributes such as In and InOut are not used in binding, and can be viewed using ParameterInfo.

culture
CultureInfo

Экземпляр объекта CultureInfo, используемого для управления приведением типов.An instance of CultureInfo used to govern the coercion of types. Он необходим, например, для преобразования строки, которая представляет число 1000, в значение типа Double, поскольку в разных культурах 1000 может быть представлено по-разному.This is necessary, for example, to convert a string that represents 1000 to a Double value, since 1000 is represented differently by different cultures. Если параметр culture имеет значение null, используется CultureInfo для CultureInfo текущего потока.If culture is null, the CultureInfo for the current thread's CultureInfo is used.

namedParameters
String[]

Массив объектов типа String, содержащий имена параметров, совпадающие, начиная с нулевого элемента, с массивом args.An array of type String containing parameter names that match up, starting at element zero, with the args array. В массиве не должно быть пустых элементов.There must be no holes in the array. Если args.If args. Значение Length больше значения namedParameters.Length is greater than namedParameters. Length, остальные параметры заполняются по порядку.Length, the remaining parameters are filled in order.

Возвраты

Объект Object, представляющий значение, возвращаемое указанным членом.An Object representing the return value of the invoked member.

Комментарии

Метод будет вызываться, если выполняются оба следующих условия.A method will be invoked if both the following conditions are true:

  • Число параметров в объявлении метода равно числу аргументов в указанном списке аргументов (если для члена не определены аргументы по умолчанию).The number of parameters in the method declaration equals the number of arguments in the specified argument list (unless default arguments are defined on the member).

  • Тип каждого аргумента может быть преобразован связывателем в тип параметра.The type of each arguments can be converted by the binder to the type of the parameter.

Связыватель найдет все соответствующие методы.The binder will find all the matching methods. Эти методы находятся в зависимости от типа запрошенной привязки (BindingFlags.MethodInvoke, BindingFlags.GetPropertiesи т. д.).These methods are found based upon the type of binding requested (BindingFlags.MethodInvoke, BindingFlags.GetProperties, and so on). Набор методов фильтруется по имени, числу аргументов и набору модификаторов поиска, определенных в связывателе.The set of methods is filtered by the name, number of arguments, and a set of search modifiers defined in the binder.

После выбора метода он будет вызван.After the method is selected, it will be invoked. На этом этапе проверяется доступность.Accessibility is checked at that point. Поиск может управлять тем, какой набор методов выполняется в зависимости от атрибута доступности, связанного с методом.The search may control which set of methods are searched based upon the accessibility attribute associated with the method. Binder.BindToMethod Метод отвечает за выбор вызываемого метода.The Binder.BindToMethod method is responsible for selecting the method to be invoked. Связыватель по умолчанию выбирает наиболее конкретное соответствие.The default binder selects the most specific match.

Примечание

Ограничения доступа игнорируются для полностью доверенного кода.Access restrictions are ignored for fully trusted code. Таким образом, закрытые конструкторы, методы, поля и свойства могут быть доступны и вызываться с помощью отражения всякий раз, когда код полностью надежен.That is, private constructors, methods, fields, and properties can be accessed and invoked using reflection whenever the code is fully trusted.

В настоящее время выполняет семантику отражения Microsoft .NET Framework для каждого типа объекта. InvokeMemberCurrently, InvokeMember performs the Microsoft .NET Framework reflection semantics for every type of object.

Если элемент, указанный параметром name, является массивом BindingFlags.GetField и флаг установлен в invokeAttrзначение ON args , массив указывает элементы, значения которых должны быть возвращены.If the member specified by name is an array and the BindingFlags.GetField flag is set on invokeAttr, the args array specifies the elements whose values are to be returned. Например, следующий вызов через Type Object t возвращает значение первого элемента массива строк MyArray, который является членом вызывающего объекта:For example, the following call through Type object t returns the value of the first element of the string array MyArray, which is a member of the calling object:

String ret = (String) t.InvokeMember ("MyArray", BindingFlags.GetField, null, this, new Variant[]{0});

Можно использовать InvokeMember для задания одного или нескольких элементов массива элементов.You can use InvokeMember to set one or more elements of a member array. Все элементы задаются одинаковым значением.All elements are set to the same value. args Массив должен быть отформатирован следующим образом:The args array must be formatted as follows:

{index1,  
    index2,, value}  

Например, чтобы задать первый элемент MyArray из предыдущего примера, используется следующий синтаксис:For example, to set the first member of MyArray from the previous example, the syntax is as follows:

t.InvokeMember ("MyArray", BindingFlags.SetField, null, this, new  
    Variant[]{0,"Updated"});  

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

Дополнительно