TypeDelegator.InvokeMember Método

Definição

Invoca o elemento especificado. O método a invocar deve ser acessível e fornecer a correspondência mais específica com a lista de argumentos especificada, sob as restrições dos atributos de binder e 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);
[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

Parâmetros

name
String

O nome do membro a invocar. Isto pode ser um construtor, método, propriedade ou campo. Se uma cadeia vazia ("") for passada, o membro padrão é invocado.

invokeAttr
BindingFlags

O atributo de invocação. Isto deve ser um dos seguintes BindingFlags : InvokeMethod, CreateInstance, Static, GetField, SetField, GetProperty, ou SetProperty. Deve ser especificado um atributo de invocação adequado. Se um membro estático for invocado, a Static flag deve ser definida.

binder
Binder

Um objeto que permite a vinculação, coerção de tipos de argumentos, invocação de membros e recuperação de MemberInfo objetos através de reflexão. Se binder for null, utiliza-se o dossier padrão. Consulte Binder.

target
Object

O objeto sobre o qual invocar o membro especificado.

args
Object[]

Um array de tipo Object que contém o número, ordem e tipo dos parâmetros do membro a invocar. Se args contiver um não inicializado Object, é tratado como vazio, que, com o fichário padrão, pode ser alargado para 0, 0,0 ou uma cadeia.

modifiers
ParameterModifier[]

Um array de tipo ParameterModifier com o mesmo comprimento que args, com elementos que representam os atributos associados aos argumentos do membro a invocar. Um parâmetro tem atributos associados na assinatura do membro. Para ByRef, use ParameterModifier.ByRef, e para nenhum, use ParameterModifier.None. O dossier padrão faz correspondência exata nestes. Atributos como In e InOut não são usados na ligação, e podem ser visualizados usando ParameterInfo.

culture
CultureInfo

Um exemplo de CultureInfo usado para governar a coerção de tipos. Isto é necessário, por exemplo, para converter uma cadeia que representa 1000 num Double valor, uma vez que 1000 é representado de forma diferente por culturas diferentes. Se culture for null, usa-se o CultureInfo tópico para a linha CultureInfo atual.

namedParameters
String[]

Um array de strings contendo nomes de parâmetros que coincidem, começando no elemento zero, com o args array. Não deve haver buracos na matriz. Se args. Length é maior que namedParameters. Length, os restantes parâmetros são preenchidos por ordem.

Devoluções

Um Object representa o valor de retorno do membro invocado.

Atributos

Observações

Um método será invocado se ambas as seguintes condições forem verdadeiras:

  • O número de parâmetros na declaração do método é igual ao número de argumentos na lista de argumentos especificada (a menos que os argumentos padrão estejam definidos no membro).

  • O tipo de cada argumento pode ser convertido pelo ligador para o tipo do parâmetro.

O dossier vai encontrar todos os métodos de correspondência. Estes métodos são encontrados com base no tipo de encadernação solicitado (BindingFlags.MethodInvoke, BindingFlags.GetProperties, e assim sucessivamente). O conjunto de métodos é filtrado pelo nome, número de argumentos e um conjunto de modificadores de pesquisa definidos no binder.

Depois de selecionado o método, será invocado. A acessibilidade é verificada nesse ponto. A pesquisa pode controlar que 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 dossier padrão seleciona a correspondência mais específica.

Note

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 acedidos e invocados usando reflexão sempre que o código for totalmente confiável.

Atualmente, InvokeMember realiza a semântica de reflexão do Microsoft .NET Framework para cada tipo de objeto.

Se o elemento especificado pelo nome for um array e o BindingFlags.GetField flag estiver definido em invokeAttr, o args array especifica os elementos cujos valores devem ser devolvidos. Por exemplo, a seguinte chamada através Type do objeto t devolve o valor do primeiro elemento do MyArray do array de strings, que é um membro do objeto que chama:

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

Pode usar InvokeMember para definir um ou mais elementos de um array de membros. Todos os elementos são definidos com o mesmo valor. O args array deve ser formatado da seguinte forma:

{index1,
    index2,, value}

Por exemplo, para definir o primeiro membro do MyArray a partir do exemplo anterior, a sintaxe é a seguinte:

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

Aplica-se a

Ver também