TypeDelegator.InvokeMember Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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 classeur 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);
[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
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 une chaîne vide (« ») est passée, le membre par défaut est appelé.
- invokeAttr
- BindingFlags
Attribut d’appel. Il doit s’agir de l’un des éléments suivants BindingFlags : , , InvokeMethodCreateInstance, Static, GetField, SetField, ou GetPropertySetProperty. Un attribut d’appel approprié doit être spécifié. Si un membre statique doit être appelé, l’indicateur Static doit être défini.
- binder
- Binder
Objet qui permet la liaison, la contrainte des types d’arguments, l’appel de membres et la récupération d’objets via la MemberInfo réflexion. Si binder c’est nullle cas, le classeur par défaut est utilisé. Voir 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 elle contient une valeur non initialisée Object, elle est traitée comme vide, ce qui, avec le classeur par défaut, peut être élargi à 0, 0,0 ou une chaîne.
- modifiers
- ParameterModifier[]
Tableau de type ParameterModifier qui est 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 qui lui sont associés dans la signature du membre. Pour ByRef, utilisez ParameterModifier.ByRef, et pour aucun, utilisez ParameterModifier.None. Le classeur par défaut effectue des correspondances exactes sur ceux-ci. Les attributs tels que In et InOut ne sont pas utilisés dans la liaison et peuvent être consultés à l’aide ParameterInfode .
- culture
- CultureInfo
Instance utilisée CultureInfo pour régir la contrainte des types. Cela est nécessaire, par exemple, pour convertir une chaîne qui représente 1 000 en valeur Double , car 1000 est représenté différemment par différentes cultures. Si culture c’est nullCultureInfo le cas, le CultureInfo thread actuel est utilisé.
- namedParameters
- String[]
Tableau de chaînes contenant des noms de paramètres qui correspondent à l’élément zéro, avec le args tableau. Il ne doit pas y avoir de trous dans le tableau. Si args.
Length est supérieur à namedParameters.
Length, les paramètres restants sont renseignés dans l’ordre.
Retours
Représentant Object la valeur de retour du membre appelé.
- Attributs
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ée (BindingFlags.MethodInvoke, BindingFlags.GetPropertieset 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 sera appelée. L’accessibilité est vérifiée à ce stade. La recherche peut contrôler quel ensemble de méthodes sont recherchés en fonction de l’attribut d’accessibilité associé à la méthode. La Binder.BindToMethod méthode est chargée de sélectionner la méthode à appeler. Le classeur par défaut sélectionne la correspondance la plus spécifique.
Note
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’appel suivant par Type l’objet t 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 de membres. 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"});