TypeBuilder.InvokeMember Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Вызывает указанный элемент. Вызываемый метод должен быть доступен и обеспечить наиболее конкретное соответствие с указанным списком аргументов в соответствии с ограничениями указанных атрибутов привязки и вызова.
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);
[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 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);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)]
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);
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);
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);
[<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)>]
override this.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)>]
override this.InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> obj
override this.InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> obj
Public Overrides 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.
- binder
- Binder
Объект, который включает привязку, приведение типов аргументов, вызов элементов и получение объектов MemberInfo с помощью отражения. Если привязка имеет значение null, используется привязка по умолчанию. См. Binder.
- target
- Object
Объект, на котором вызывается указанный элемент. Если элемент является статическим, этот параметр игнорируется.
- args
- Object[]
Список аргументов. Это массив объектов, содержащий число, порядок и тип параметров вызываемого элемента. Если нет параметров, это должно быть null.
- modifiers
- ParameterModifier[]
Массив той же длины, что args и элементы, представляющие атрибуты, связанные с аргументами вызываемого элемента. Параметр имеет атрибуты, связанные с ним в метаданных. Они используются различными службами взаимодействия. Дополнительные сведения см. в спецификациях метаданных.
- culture
- CultureInfo
Экземпляр, используемый CultureInfo для управления приведением типов. Если это значение null, CultureInfo используется текущий поток. (Обратите внимание, что это необходимо, например, преобразовать строку, представляющую 1000 в двойное значение, так как 1000 представлено по-разному различными языками и региональными параметрами.)
- namedParameters
- String[]
Каждый параметр в массиве namedParameters получает значение в соответствующем элементе в массиве args . Если длина больше длины args , остальные значения аргументов namedParametersпередаются в порядке.
Возвращаемое значение
Возвращает возвращаемое значение вызываемого элемента.
- Атрибуты
Исключения
Этот метод в настоящее время не поддерживается для неполных типов.
Комментарии
Метод вызывается, если число параметров в объявлении метода равно числу аргументов в указанном списке аргументов, а тип каждого аргумента можно преобразовать с помощью привязки к типу параметра.
Привязчик найдет все соответствующие методы. Эти методы найдены на основе типа запрошенной привязки (BindingFlags.InvokeMethod, BindingFlags.GetProperties и т. д.). Набор методов фильтруется по имени, количеству аргументов и набору модификаторов поиска, определенных в привязке. После выбора метода он будет вызван. Специальные возможности проверяются на этом этапе. Поиск может управлять набором методов поиска на основе атрибута специальных возможностей, связанного с методом. Метод IBinder.BindToMethod отвечает за выбор вызываемого метода. Привязка по умолчанию выбирает наиболее конкретное совпадение.
Note
Ограничения доступа игнорируются для полностью доверенного кода. То есть к частным конструкторам, методам, полям и свойствам можно обращаться и вызывать с помощью отражения всякий раз, когда код полностью доверяется.
Этот метод в настоящее время не поддерживается. Вы можете получить тип с помощью Type.GetType или Assembly.GetType использовать отражение для полученного типа.