TypeDelegator.InvokeMember Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Invoca o membro especificado. O método a ser invocado deve ser acessível e fornecer a correspondência mais específica com a lista de argumentos especificada, sob as restrições dos atributos associadores e de invocação especificados.
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
O nome do membro a ser invocado. Pode ser um construtor, um método, uma propriedade ou um campo. Se uma cadeia de caracteres vazia ("") for passada, o membro padrão será invocado.
- invokeAttr
- BindingFlags
O atributo de invocação. Deve ser um dos seguintes BindingFlags : InvokeMethod
, CreateInstance
, Static
, GetField
, SetField
, GetProperty
ou SetProperty
. É necessário especificar um atributo de invocação adequado. Caso um membro estático deva ser invocado, o sinalizador Static
deverá ser definido.
- binder
- Binder
Um objeto que permite a associação, a coerção de tipos de argumentos, invocação de membros e a recuperação de objetos MemberInfo
por meio de reflexão. Caso binder
seja null
, o associador padrão é usado. Consulte Binder.
- target
- Object
O objeto no qual invocar o membro especificado.
- args
- Object[]
Uma matriz do tipo Object
que contém o número, a ordem e os tipo dos parâmetros do membro a ser invocado. Se args
contiver um Object
não inicializado, ele será considerado vazio, o que, com o associador padrão poderá ser ampliado para 0, 0,0 ou uma cadeia de caracteres.
- modifiers
- ParameterModifier[]
Uma matriz do tipo ParameterModifier
que tem o mesmo comprimento de args
, com elementos que representam os atributos associados com os argumentos do membro a ser invocado. Um parâmetro com atributos associados a ele na assinatura do membro. Para ByRef, use ParameterModifier.ByRef
e para none, use ParameterModifier.None
. O associador padrão gera uma correspondência exata neles. Atributos como In
e InOut
não são usados na associação e podem ser exibidos usando ParameterInfo
.
- culture
- CultureInfo
Uma instância de CultureInfo
usada para determinar a coerção de tipos. Por exemplo, isso é necessário para converter uma cadeia de caracteres que representa 1000 para um valor Double, uma vez que 1000 é representado de forma diferente por diferentes culturas. Caso culture
seja null
, CultureInfo para o CultureInfo do thread atual será usado.
- namedParameters
- String[]
Uma matriz de cadeia de caracteres que contém os nomes de parâmetros correspondentes, começando no elemento zero, com a matriz args
. Não deve haver espaços na matriz. Se args
.
Length
é maior que namedParameters
.
Length
, os parâmetros restantes são preenchidos na ordem.
Retornos
Um Object
que representa o valor retornado do membro invocado.
Comentários
Um método será invocado se ambas as seguintes condições forem verdadeiras:
O número de parâmetros na declaração de método é igual ao número de argumentos na lista de argumentos especificados (a menos que os argumentos padrão sejam definidos no membro).
O tipo de cada argumento pode ser convertido pelo associador para o tipo do parâmetro .
O associador encontrará todos os métodos correspondentes. Esses métodos são encontrados com base no tipo de associação solicitada (BindingFlags.MethodInvoke
, BindingFlags.GetProperties
e assim por diante). O conjunto de métodos é filtrado pelo nome, pelo número de argumentos e por um conjunto de modificadores de pesquisa definidos no associador.
Depois que o método for selecionado, ele será invocado. A acessibilidade é verificada nesse ponto. A pesquisa pode controlar qual conjunto de métodos são pesquisados com base no atributo de acessibilidade associado ao método . O Binder.BindToMethod método é responsável por selecionar o método a ser invocado. O associador padrão seleciona a correspondência mais específica.
Observação
As restrições de acesso são ignoradas para código totalmente confiável. Ou seja, construtores privados, métodos, campos e propriedades podem ser acessados e invocados usando reflexão sempre que o código for totalmente confiável.
Atualmente, InvokeMember
executa a semântica de reflexão do Microsoft .NET Framework para cada tipo de objeto.
Se o membro especificado pelo nome for uma matriz e o BindingFlags.GetField
sinalizador estiver definido em invokeAttr
, a args
matriz especificará os elementos cujos valores devem ser retornados. Por exemplo, a chamada a seguir por meio Type
do objeto t
retorna o valor do primeiro elemento da matriz de cadeia de caracteres MyArray, que é um membro do objeto de chamada:
String ret = (String) t.InvokeMember ("MyArray", BindingFlags.GetField, null, this, new Variant[]{0});
Você pode usar InvokeMember
para definir um ou mais elementos de uma matriz de membros. Todos os elementos são definidos com o mesmo valor. A args
matriz deve ser formatada da seguinte maneira:
{index1,
index2,, value}
Por exemplo, para definir o primeiro membro do MyArray do exemplo anterior, a sintaxe é a seguinte:
t.InvokeMember ("MyArray", BindingFlags.SetField, null, this, new
Variant[]{0,"Updated"});