IReflect.InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]) Método

Definición

Invoca el miembro especificado.Invokes a specified member.

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

Parámetros

name
String

Nombre del miembro que se va a buscar.The name of the member to find.

invokeAttr
BindingFlags

Uno de los atributos de invocación BindingFlags.One of the BindingFlags invocation attributes. El parámetro invokeAttr puede ser un constructor, método, propiedad o campo.The invokeAttr parameter may be a constructor, method, property, or field. Debe especificarse un atributo de invocación apropiado.A suitable invocation attribute must be specified. Para invocar el miembro predeterminado de una clase, pase la cadena vacía ("") como nombre del miembro.Invoke the default member of a class by passing the empty string ("") as the name of the member.

binder
Binder

Una de las marcas de bits BindingFlags.One of the BindingFlags bit flags. Implementa Binder, que contiene propiedades relacionadas con este método.Implements Binder, containing properties related to this method.

target
Object

Objeto donde debe invocarse al miembro especificado.The object on which to invoke the specified member. Este parámetro se omite para los miembros estáticos.This parameter is ignored for static members.

args
Object[]

Matriz de objetos que contiene el número, orden y tipo de los parámetros del miembro que se va a invocar.An array of objects that contains the number, order, and type of the parameters of the member to be invoked. Si no hay parámetros, es una matriz vacía.This is an empty array if there are no parameters.

modifiers
ParameterModifier[]

Matriz de objetos ParameterModifier.An array of ParameterModifier objects. Esta matriz tiene la misma longitud que el parámetro args, que representa los atributos de argumento del miembro invocado en los metadatos.This array has the same length as the args parameter, representing the invoked member's argument attributes in the metadata. Un parámetro puede tener los siguientes atributos: pdIn, pdOut, pdRetval, pdOptional y pdHasDefault.A parameter can have the following attributes: pdIn, pdOut, pdRetval, pdOptional, and pdHasDefault. Representan a [In], [Out], [retval], [optional] y a un parámetro predeterminado, respectivamente.These represent [In], [Out], [retval], [optional], and a default parameter, respectively. Diversos servicios de interoperabilidad utilizan estos atributos.These attributes are used by various interoperability services.

culture
CultureInfo

Instancia de CultureInfo usada para regir la conversión de tipos.An instance of CultureInfo used to govern the coercion of types. Por ejemplo, culture convierte un valor String que representa 1000 a un valor Double, ya que 1000 se representa de distinta manera en diferentes referencias culturales.For example, culture converts a String that represents 1000 to a Double value, since 1000 is represented differently by different cultures. Si este parámetro es null, se utiliza CultureInfo para el subproceso actual.If this parameter is null, the CultureInfo for the current thread is used.

namedParameters
String[]

Matriz String de parámetros.A String array of parameters.

Devoluciones

El miembro especificado.The specified member.

Excepciones

Se especifica más de un argumento para un campo set.More than one argument is specified for a field set.

No se encuentran el campo o la propiedad.The field or property cannot be found.

No se encuentra el método.The method cannot be found.

Se invoca un miembro privado sin el objeto ReflectionPermission necesario.A private member is invoked without the necessary ReflectionPermission.

Ejemplos

En el ejemplo siguiente se obtiene el valor de Now la propiedad.The following example obtains the value of the Now property.

#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

Comentarios

El método que se va a invocar debe ser accesible y proporcionar la coincidencia más específica con la lista de argumentos dada, bajo las restricciones del enlazador y los atributos de invocación indicados.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.

Se invoca un método si el número de parámetros de la declaración de método es igual al número de argumentos de la lista de argumentos especificada y el enlazador puede convertir el tipo de cada argumento al tipo del parámetro.A method is invoked if the number of parameters in the method declaration equals the number of arguments in the specified argument list, and the type of each argument can be converted by the binder to the type of the parameter.

Nota

La matriz de modificadores de parámetro que se InvokeMember pasa al método debe contener un modificador de parámetro único.The array of parameter modifiers passed to the InvokeMember method must contain a single parameter modifier. Solo se considera el primer modificador de parámetro al determinar qué argumento debe pasarse por referencia cuando se expone a COM.Only the first parameter modifier is considered when determining which argument needs to be passed by reference when exposed to COM.

El enlazador busca todos los métodos coincidentes, de acuerdo con el tipo deBindingFlags.InvokeMethodenlace GetPropertiessolicitado (,, etc.).The binder finds all matching methods, in accordance with the type of binding requested (BindingFlags.InvokeMethod, GetProperties, and so on). El conjunto de métodos se filtra por el nombre, el número de argumentos y un conjunto de modificadores de búsqueda definidos en el enlazador.The set of methods is filtered by the name, number of arguments, and a set of search modifiers defined in the binder. Una vez seleccionado el método, se invoca y se comprueba la accesibilidad en ese momento.After the method is selected, it is invoked, and accessibility is checked at that point. La búsqueda puede controlar qué conjunto de métodos se busca en función del atributo de accesibilidad asociado al método.The search may control which set of methods is searched based upon the accessibility attribute associated with the method. BindToMethodselecciona el método que se va a invocar.BindToMethod selects the method to be invoked. El enlazador predeterminado selecciona la coincidencia más específica.The default binder selects the most specific match.

Las restricciones de acceso se omiten para el código de plena confianza.Access restrictions are ignored for fully trusted code. Es decir, se puede tener acceso a los constructores, métodos, campos y propiedades privados y se pueden invocar mediante reflexión siempre que el código sea de plena confianza.That is, private constructors, methods, fields, and properties can be accessed and invoked through reflection whenever the code is fully trusted.

Se aplica a

Consulte también: