TypeDelegator.InvokeMember Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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"});