Partage via


TypeDelegator.InvokeMember Méthode

Définition

Appelle le membre spécifié. La méthode à appeler doit être accessible et fournir la correspondance la plus spécifique avec la liste d’arguments spécifiée, sous les contraintes des attributs de binder et d’appel spécifiés.

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

Paramètres

name
String

Nom du membre à appeler. Il peut s'agir d'un constructeur, d'une méthode, d'une propriété ou d'un champ. Si vous passez une chaîne vide (""), le membre par défaut est appelé.

invokeAttr
BindingFlags

Attribut d’appel. Il doit s'agir de BindingFlags : InvokeMethod, CreateInstance, Static, GetField, SetField, GetProperty ou SetProperty. Un attribut d’appel approprié doit être spécifié. Si le membre à appeler est statique, l'indicateur Static doit être défini.

binder
Binder

Objet qui active la liaison, la contrainte de types d'arguments, l'appel des membres et la récupération d'objets MemberInfo par le biais de la réflexion. Si binder est null, le binder par défaut est utilisé. Consultez Binder.

target
Object

Objet sur lequel appeler le membre spécifié.

args
Object[]

Tableau de type Object qui contient le nombre, l'ordre et le type des paramètres du membre à appeler. Si args contient un Object non initialisé, il est traité comme vide ce qui, avec le binder par défaut, peut être élargi à 0, 0.0 ou à une chaîne.

modifiers
ParameterModifier[]

Tableau de type ParameterModifier, de la même longueur que args, avec des éléments qui représentent les attributs associés aux arguments du membre à appeler. Un paramètre a des attributs associés à celui-ci dans la signature du membre. Pour ByRef, utilisez ParameterModifier.ByRef ; pour n'en avoir aucun, utilisez ParameterModifier.None. Le binder par défaut recherche une correspondance exacte pour ceux-ci. Les attributs tels que In et InOut ne sont pas utilisés pour la liaison ; ils peuvent être visualisés à l'aide de ParameterInfo.

culture
CultureInfo

Instance de CultureInfo utilisée pour régir la contrainte des types. Par exemple, cela est nécessaire pour la conversion d'une chaîne représentant 1000 en une valeur Double, car 1000 est représenté de différentes manières selon la culture. Si culture est null, le CultureInfo du CultureInfo du thread en cours est utilisé.

namedParameters
String[]

Tableau de chaînes contenant les noms de paramètres correspondant, à partir de l’élément 0, avec le tableau args. Le tableau ne doit pas contenir d'espaces. Si args. Length est supérieur à namedParameters. Length, les paramètres restants sont remplis dans l'ordre.

Retours

Object représentant la valeur de retour du membre appelé.

Remarques

Une méthode est appelée si les deux conditions suivantes sont remplies :

  • Le nombre de paramètres dans la déclaration de méthode est égal au nombre d’arguments dans la liste d’arguments spécifiée (sauf si les arguments par défaut sont définis sur le membre).

  • Le type de chaque argument peut être converti par le classeur en type du paramètre.

Le classeur trouvera toutes les méthodes correspondantes. Ces méthodes sont trouvées en fonction du type de liaison demandé (BindingFlags.MethodInvoke, BindingFlags.GetProperties, et ainsi de suite). L’ensemble de méthodes est filtré par le nom, le nombre d’arguments et un ensemble de modificateurs de recherche définis dans le classeur.

Une fois la méthode sélectionnée, elle est appelée. L’accessibilité est vérifiée à ce stade. La recherche peut contrôler l’ensemble de méthodes recherché en fonction de l’attribut d’accessibilité associé à la méthode. La Binder.BindToMethod méthode est responsable de la sélection de la méthode à appeler. Le classeur par défaut sélectionne la correspondance la plus spécifique.

Notes

Les restrictions d’accès sont ignorées pour le code entièrement approuvé. Autrement dit, les constructeurs privés, les méthodes, les champs et les propriétés sont accessibles et appelés à l’aide de la réflexion chaque fois que le code est entièrement approuvé.

Actuellement, InvokeMember effectue la sémantique de réflexion Microsoft .NET Framework pour chaque type d’objet.

Si le membre spécifié par nom est un tableau et que l’indicateur BindingFlags.GetField est défini sur invokeAttr, le args tableau spécifie les éléments dont les valeurs doivent être retournées. Par exemple, l’objet t call through Type suivant retourne la valeur du premier élément du tableau de chaînes MyArray, qui est membre de l’objet appelant :

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

Vous pouvez utiliser InvokeMember pour définir un ou plusieurs éléments d’un tableau membre. Tous les éléments sont définis sur la même valeur. Le args tableau doit être mis en forme comme suit :

{index1,  
    index2,, value}  

Par exemple, pour définir le premier membre de MyArray à partir de l’exemple précédent, la syntaxe est la suivante :

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

S’applique à

Voir aussi