Compartir a través de


TypeDelegator.InvokeMember Método

Definición

Invoca el miembro especificado. 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.

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);
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
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

Parámetros

name
String

Nombre del miembro que se va a invocar. Este puede ser un constructor, método, propiedad o campo. Si se pasa una cadena vacía (""), se invoca al miembro predeterminado.

invokeAttr
BindingFlags

Atributo de invocación. Debe ser uno de los valores siguientes: BindingFlags: InvokeMethod, CreateInstance, Static, GetField, SetField, GetProperty o SetProperty. Debe especificarse un atributo de invocación apropiado. Si se va a invocar a un miembro estático, se debe establecer la marca Static.

binder
Binder

Objeto que habilita el enlace, la conversión de tipos de argumentos, las llamadas a miembros y la recuperación de objetos MemberInfo mediante reflexión. Si binder es null, se usa el enlazador predeterminado. Vea Binder.

target
Object

Objeto donde debe invocarse al miembro especificado.

args
Object[]

Esta matriz de tipo Object contiene el número, orden y tipo de los parámetros del miembro al que se va a invocar. Si args contiene un objeto Object no inicializado, se tratará como vacío, el cual, junto con el enlazador predeterminado, puede ensancharse hasta llegar a 0, 0.0 ó a una cadena.

modifiers
ParameterModifier[]

Matriz de tipo ParameterModifier que tiene la misma longitud que args con elementos que representan a los atributos asociados a los argumentos del miembro al que se va a invocar. Un parámetro tiene atributos asociados a él en la firma del miembro. Para ByRef, utilice ParameterModifier.ByRef, y para ninguno, utilice ParameterModifier.None. El enlazador predeterminado hace que ambos coincidan exactamente. Los atributos como In y InOut no se utilizan para enlazar y se pueden ver mediante ParameterInfo.

culture
CultureInfo

Instancia de CultureInfo usada para regir la conversión de tipos. Esto es necesario, por ejemplo, para convertir una cadena que representa 1000 en un valor Double, puesto que 1000 se representa de forma diferente en distintas referencias culturales. Si culture es null, se utiliza CultureInfo para el CultureInfo del subproceso actual.

namedParameters
String[]

Matriz de cadenas que contiene nombres de parámetro que coinciden, a partir del elemento cero, con la matriz args. No debe haber lagunas en la matriz. Si args. Length es mayor que namedParameters. Length, el resto de parámetros se rellenan en orden.

Devoluciones

Object que representa el valor devuelto del miembro invocado.

Comentarios

Se invocará un método si se cumplen las dos condiciones siguientes:

  • 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 (a menos que los argumentos predeterminados se definan en el miembro).

  • El enlazador puede convertir el tipo de cada argumento en el tipo del parámetro .

El enlazador encontrará todos los métodos coincidentes. Estos métodos se encuentran en función del tipo de enlace solicitado (BindingFlags.MethodInvoke, BindingFlags.GetProperties, etc.). 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.

Una vez seleccionado el método, se invocará. La accesibilidad se comprueba en ese momento. La búsqueda puede controlar qué conjunto de métodos se buscan en función del atributo de accesibilidad asociado al método . El Binder.BindToMethod método es responsable de seleccionar el método que se va a invocar. El enlazador predeterminado selecciona la coincidencia más específica.

Nota

Las restricciones de acceso se omiten para el código de plena confianza. Es decir, se puede acceder a constructores privados, métodos, campos y propiedades e invocarse mediante reflexión siempre que el código sea de plena confianza.

Actualmente, InvokeMember realiza la semántica de reflexión de Microsoft .NET Framework para cada tipo de objeto.

Si el miembro especificado por nombre es una matriz y la BindingFlags.GetField marca se establece en invokeAttr, la args matriz especifica los elementos cuyos valores se van a devolver. Por ejemplo, la siguiente llamada a través Type del objeto t devuelve el valor del primer elemento de la matriz de cadenas MyArray, que es miembro del objeto que realiza la llamada:

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

Puede usar InvokeMember para establecer uno o varios elementos de una matriz miembro. Todos los elementos se establecen en el mismo valor. La args matriz debe tener el formato siguiente:

{index1,  
    index2,, value}  

Por ejemplo, para establecer el primer miembro de MyArray del ejemplo anterior, la sintaxis es la siguiente:

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

Se aplica a

Consulte también