MethodInfo.IsGenericMethodDefinition Propriété

Définition

Obtient une valeur indiquant si le courant MethodInfo 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 large 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 courant MethodInfo représente une définition de méthode générique, puis :

Utilisez la IsGenericMethodDefinition propriété pour déterminer si des arguments de type ont été attribués aux paramètres de type d’une méthode générique. Si des arguments de type ont été attribués, la IsGenericMethodDefinition propriété retourne false même si certains arguments de type sont Type des objets qui représentent des paramètres de type de types englobants. Considérons par exemple le code suivant :

 ```csharp
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 la 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 propriété retourne false pour la IsGenericMethodDefinition méthode N<V,int>.

Note

Bien que la méthode N<V,int> construite ouverte ne soit pas rencontrée lors de la réflexion sur la classe C, elle doit être générée à l’aide MakeGenericMethod pour é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, une définition de méthode générique est spécifique à chaque type construit. Considérons par exemple le code 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) dans Visual Basic), la méthode générique M retourne B<int, S>. Dans le type C<T>ouvert, M retourne B<T, S>. Dans les deux cas, la IsGenericMethodDefinition propriété retourne true pour le MethodInfo M 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é.

S’applique à

Voir aussi