IReflect.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 un membre spécifié.
public:
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 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 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);
abstract member InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> obj
Public 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 à rechercher.
- invokeAttr
- BindingFlags
Un des attributs d'appel BindingFlags. Le paramètre invokeAttr
peut être un constructeur, une méthode, une propriété ou un champ. Un attribut d’appel approprié doit être spécifié. Il est possible d'appeler le membre par défaut d'une classe en passant une chaîne vide ("") en tant que nom du membre.
- binder
- Binder
Un des indicateurs binaires BindingFlags. Implémente Binder, contenant les propriétés associées à cette méthode.
- target
- Object
Objet sur lequel appeler le membre spécifié. Ce paramètre est ignoré pour les membres statiques.
- args
- Object[]
Tableau d'objets qui contient le nombre, l'ordre et le type des paramètres du membre à appeler. En l'absence de paramètres, ce tableau est vide.
- modifiers
- ParameterModifier[]
Tableau d'objets ParameterModifier. La longueur de ce tableau est égale à celle du paramètre args
représentant les attributs d'argument du membre appelé dans les métadonnées. Un paramètre peut avoir les attributs suivants : pdIn
, pdOut
, pdRetval
, pdOptional
ou pdHasDefault
. Ceux-ci représentent [In], [Out], [retval], [optional], et un paramètre par défaut, respectivement. Ils sont utilisés par divers services d'interopérabilité.
- culture
- CultureInfo
Instance de CultureInfo utilisée pour régir la contrainte des types. Par exemple, culture
convertit une chaîne représentant 1 000 en une valeur Double, car 1 000 est représenté de différentes manières selon la culture. Si ce paramètre est null
, le CultureInfo du thread en cours est utilisé.
- namedParameters
- String[]
Tableau de chaînes de paramètres.
Retours
Membre spécifié.
Exceptions
Plusieurs arguments sont spécifiés pour un champ set
.
Le champ ou la propriété est introuvable.
La méthode est introuvable.
Un membre privé est appelé sans le ReflectionPermission nécessaire.
Exemples
L’exemple suivant obtient la valeur de la Now propriété .
#using <System.DLL>
using namespace System;
using namespace System::Reflection;
#define NULL 0
void main()
{
Type^ tDate = Type::GetType( L"System.DateTime" );
Object^ result = tDate->InvokeMember( L"Now", BindingFlags::GetProperty, nullptr, NULL, gcnew array<Object^>(0) );
Console::WriteLine( result->ToString() );
}
using System;
using System.Reflection;
public class MainClass
{
public static void Main(string[] args)
{
Type tDate = typeof(System.DateTime);
Object result = tDate.InvokeMember("Now",
BindingFlags.GetProperty, null, null, new Object[0]);
Console.WriteLine(result.ToString());
}
}
Imports System.Reflection
Public Class MainClass
Public Overloads Shared Sub Main(ByVal args() As String)
Dim tDate As Type = GetType(System.DateTime)
Dim result As [Object] = tDate.InvokeMember("Now", _
BindingFlags.GetProperty, Nothing, Nothing, New [Object](-1) {})
Console.WriteLine(result.ToString())
End Sub
End Class
Remarques
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.
Une méthode est appelée si 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, et si le type de chaque argument peut être converti par le classeur en type du paramètre.
Notes
Le tableau de modificateurs de paramètres transmis à la InvokeMember méthode doit contenir un modificateur de paramètre unique. Seul le premier modificateur de paramètre est pris en compte lors de la détermination de l’argument qui doit être passé par référence en cas d’exposition à COM.
Le classeur recherche toutes les méthodes correspondantes, conformément au type de liaison demandé (BindingFlags.InvokeMethod, 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 et 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. BindToMethod sélectionne la méthode à appeler. Le classeur par défaut sélectionne la correspondance la plus spécifique.
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 par réflexion chaque fois que le code est entièrement approuvé.