MethodInfo.IsGenericMethodDefinition Propriété
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.
Obtient une valeur indiquant si le MethodInfo actuel représente la définition d'une méthode générique.
public:
virtual property bool IsGenericMethodDefinition { bool get(); };
public override bool IsGenericMethodDefinition { get; }
member this.IsGenericMethodDefinition : bool
Public Overrides ReadOnly Property IsGenericMethodDefinition As Boolean
Valeur de propriété
true
si l'objet MethodInfo représente la définition d'une méthode générique ; sinon, false
.
Exemples
L’exemple de code suivant utilise la IsGenericMethodDefinition
propriété pour afficher un message indiquant si un MethodInfo représente une définition de méthode générique.
Cet exemple fait partie d’un exemple plus complet fourni pour la MakeGenericMethod méthode.
Console.WriteLine(vbTab _
& "Is this a generic method definition? {0}", _
mi.IsGenericMethodDefinition)
Console.WriteLine("\tIs this a generic method definition? {0}",
mi.IsGenericMethodDefinition);
Console::WriteLine("\tIs this a generic method definition? {0}",
mi->IsGenericMethodDefinition);
Remarques
Si le actuel MethodInfo représente une définition de méthode générique, alors :
IsGenericMethodDefinition
retournetrue
.Pour chaque Type objet du tableau retourné par la GetGenericArguments() méthode :
La propriété Type.IsGenericParameter retourne la valeur
true
.Type.DeclaringMethodRetourne le actuel MethodInfo .
La Type.GenericParameterPosition propriété est la même que la position de l' Type objet dans le tableau.
Utilisez la IsGenericMethodDefinition
propriété pour déterminer si des arguments de type ont été assignés aux paramètres de type d’une méthode générique. Si des arguments de type ont été assignés, la IsGenericMethodDefinition
propriété retourne la valeur false même si certains des arguments de type sont des Type objets qui représentent les paramètres de type des types englobants. par exemple, considérez le # code C, Visual Basic et C++ suivant :
```cs
class C
{
T N<T,U>(T t, U u) {...}
public V M<V>(V v)
{
return N<V,int>(v, 42);
}
}
```
```vb
Class C
Public Function N(Of T,U)(ByVal ta As T, ByVal ua As U) As T
...
End Function
Public Function M(Of V)(ByVal va As V ) As V
Return N(Of V, Integer)(va, 42)
End Function
End Class
```
```cpp
ref class C
{
private:
generic <typename T, typename U> T N(T t, U u) {...}
public:
generic <typename V> V M(V v)
{
return N<V, int>(v, 42);
}
};
```
Le corps de méthode M contient un appel à la méthode N, en spécifiant le paramètre de type de M et le type Int32 . La IsGenericMethodDefinition
propriété retourne la valeur false pour la méthode N<V,int>
.
Notes
Bien que la méthode construite ouverte ne N<V,int>
soit pas rencontrée lors de la réflexion sur la classe C, elle doit être générée à l’aide MakeGenericMethod de afin d’émettre C en tant que classe dynamique.
Si une définition de méthode générique inclut des paramètres génériques du type déclarant, il y aura une définition de méthode générique spécifique à chaque type construit. prenons l’exemple du # code C et Visual Basic suivant :
```csharp
class B<U,V> {}
class C<T> { public B<T,S> M<S>() {...}}
```
```vb
Class B(Of U, V)
End Class
Class C(Of T)
Public Function M(Of S)() As B(Of T, S)
...
End Function
End Class
```
```cpp
generic <typename U, typename V> ref class B {};
generic <typename T> ref class C
{
public:
generic <typename S> B<T,S>^ M() {...};
};
```
dans le type construit C<int>
( C(Of Integer)
en Visual Basic), la méthode générique M retourne B<int, S>
. Dans le type Open C<T>
, M retourne B<T, S>
. Dans les deux cas, la IsGenericMethodDefinition
propriété retourne true
pour le MethodInfo qui représente M.
Pour obtenir la liste des conditions invariantes pour les termes spécifiques aux méthodes génériques, consultez la IsGenericMethod propriété. Pour obtenir la liste des conditions invariantes pour les autres termes utilisés dans la réflexion générique, consultez la IsGenericType propriété.