MethodInfo.IsGenericMethodDefinition Proprietà

Definizione

Ottiene un valore che indica se la classe MethodInfo corrente rappresenta la definizione di un metodo generico.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

Valore della proprietà

Boolean

true se l'oggetto MethodInfo rappresenta la definizione di un metodo generico; in caso contrario, false.true if the MethodInfo object represents the definition of a generic method; otherwise, false.

Esempio

Nell'esempio di codice seguente viene usata la IsGenericMethodDefinition proprietà per visualizzare un messaggio che indica se un oggetto MethodInfo rappresenta una definizione di metodo generica.The following code example uses the IsGenericMethodDefinition property to display a message indicating whether a MethodInfo represents a generic method definition.

Questo esempio fa parte di un esempio più ampio fornito per il MakeGenericMethod metodo.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);

Commenti

Se l'oggetto corrente MethodInfo rappresenta una definizione di metodo generico, quindi:If the current MethodInfo represents a generic method definition, then:

Utilizzare la IsGenericMethodDefinition proprietà per determinare se gli argomenti di tipo sono stati assegnati ai parametri di tipo di un metodo generico.Use the IsGenericMethodDefinition property to determine whether type arguments have been assigned to the type parameters of a generic method. Se gli argomenti di tipo sono stati assegnati, la IsGenericMethodDefinition proprietà restituisce false anche se alcuni degli argomenti di tipo sono Type oggetti che rappresentano i parametri di tipo dei tipi di inclusione.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. Si consideri, ad esempio, il # codice C, Visual Basic e C++ seguente: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);
    }
};
```

Il corpo del metodo di M contiene una chiamata al metodo N, specificando il parametro di tipo M e il tipo Int32 .The method body of M contains a call to method N, specifying the type parameter of M and the type Int32. La IsGenericMethodDefinition proprietà restituisce false per il metodo N<V,int> .The IsGenericMethodDefinition property returns false for method N<V,int>.

Nota

Sebbene il metodo costruito aperto N<V,int> non venga rilevato durante la reflection sulla classe C, deve essere generato utilizzando per MakeGenericMethod emettere C come classe dinamica.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.

Se una definizione di metodo generico include parametri generici del tipo dichiarante, sarà disponibile una definizione di metodo generica specifica per ogni tipo costruito.If a generic method definition includes generic parameters of the declaring type, there will be a generic method definition specific to each constructed type. Si consideri, ad esempio, il # codice C e Visual Basic seguente: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() {...};
};
```

Nel tipo costruito C<int> ( C(Of Integer) in Visual Basic), il metodo generico M restituisce B<int, S> .In the constructed type C<int> (C(Of Integer) in Visual Basic), the generic method M returns B<int, S>. Nel tipo aperto C<T> , M restituisce B<T, S> .In the open type C<T>, M returns B<T, S>. In entrambi i casi, la IsGenericMethodDefinition proprietà restituisce true per l'oggetto MethodInfo che rappresenta M.In both cases, the IsGenericMethodDefinition property returns true for the MethodInfo that represents M.

Per un elenco delle condizioni invariabili per i termini specifici dei metodi generici, vedere la IsGenericMethod Proprietà.For a list of the invariant conditions for terms specific to generic methods, see the IsGenericMethod property. Per un elenco delle condizioni invariabili per altri termini usati nella reflection generica, vedere la IsGenericType Proprietà.For a list of the invariant conditions for other terms used in generic reflection, see the IsGenericType property.

Si applica a

Vedi anche