MethodInfo.IsGenericMethodDefinition Propriété

Définition

Obtient une valeur indiquant si le MethodInfo actuel représente la définition d'une méthode générique.Gets a value indicating whether the current MethodInfo represents the definition of a generic method.

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.true if the MethodInfo object represents the definition of a generic method; otherwise, false.

Exemples

L’exemple de code suivant utilise IsGenericMethodDefinition la propriété pour afficher un message indiquant si MethodInfo un représente une définition de méthode générique.The following code example uses the IsGenericMethodDefinition property to display a message indicating whether a MethodInfo represents a generic method definition.

Cet exemple fait partie d’un exemple plus complet fourni pour MakeGenericMethod la méthode.This example is part of a larger example provided for the MakeGenericMethod method.

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 :If the current MethodInfo represents a generic method definition, then:

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.Use the IsGenericMethodDefinition property to determine whether type arguments have been assigned to the type parameters of a generic method. Si des arguments de type ont été assignés IsGenericMethodDefinition , la propriété retourne la valeur false même si certains Type des arguments de type sont des objets qui représentent les paramètres de type des types englobants.If type arguments have been assigned, the IsGenericMethodDefinition property returns false even if some of the type arguments are Type objects that represent type parameters of enclosing types. Prenons l’exemple du code C#, Visual Basic et C++ du code suivant :For example, consider the following C#, Visual Basic, and C++ code:

```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 Int32m et le type.The method body of M contains a call to method N, specifying the type parameter of M and the type Int32. La IsGenericMethodDefinition propriété retourne la valeur false pour la méthode. N<V,int>The IsGenericMethodDefinition property returns false for method N<V,int>.

Notes

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 de afin d’émettre C en tant que classe dynamique.Although the open constructed method N<V,int> is not encountered when reflecting over class C, it must be generated using MakeGenericMethod in order to emit C as a dynamic class.

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.If a generic method definition includes generic parameters of the declaring type, there will be a generic method definition specific to each constructed type. Prenons l’exemple du code C# et Visual Basic suivant :For example, consider the following C# and Visual Basic code:

```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 C<int> construit (C(Of Integer) en Visual Basic), la méthode générique M retourne B<int, S>.In the constructed type C<int> (C(Of Integer) in Visual Basic), the generic method M returns B<int, S>. Dans le type C<T>Open, M retourne B<T, S>.In the open type C<T>, M returns B<T, S>. Dans les deux cas, IsGenericMethodDefinition la propriété true retourne pour MethodInfo le qui représente M.In both cases, the IsGenericMethodDefinition property returns true for the MethodInfo that represents M.

Pour obtenir la liste des conditions invariantes pour les termes spécifiques aux méthodes génériques, IsGenericMethod consultez la propriété.For a list of the invariant conditions for terms specific to generic methods, see the IsGenericMethod property. Pour obtenir la liste des conditions invariantes pour les autres termes utilisés dans la réflexion générique IsGenericType , consultez la propriété.For a list of the invariant conditions for other terms used in generic reflection, see the IsGenericType property.

S’applique à

Voir aussi