MethodInfo.IsGenericMethodDefinition Eigenschaft

Definition

Ruft einen Wert ab, der angibt, ob die aktuelle MethodInfo die Definition einer generischen Methode darstellt.

public:
 virtual property bool IsGenericMethodDefinition { bool get(); };
public override bool IsGenericMethodDefinition { get; }
member this.IsGenericMethodDefinition : bool
Public Overrides ReadOnly Property IsGenericMethodDefinition As Boolean

Eigenschaftswert

Boolean

true, wenn das MethodInfo-Objekt die Definition einer generischen Methode darstellt, andernfalls false.

Beispiele

Im folgenden Codebeispiel wird die IsGenericMethodDefinition -Eigenschaft verwendet, um eine Meldung anzuzeigen, die angibt, ob MethodInfo eine eine generische Methodendefinition darstellt.

Dieses Beispiel ist Teil eines größeren Beispiels, das für die -Methode bereitgestellt MakeGenericMethod wird.

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);

Hinweise

Wenn die aktuelle MethodInfo eine generische Methodendefinition darstellt, dann:

Verwenden Sie die IsGenericMethodDefinition -Eigenschaft, um zu bestimmen, ob Typargumente den Typparametern einer generischen Methode zugewiesen wurden. Wenn Typargumente zugewiesen wurden, gibt die IsGenericMethodDefinition Eigenschaft false zurück, auch wenn einige der Typargumente Type Objekte sind, die Typparameter einschließender Typen darstellen. Betrachten Sie beispielsweise den folgenden # C-, Visual Basic- und 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);
    }
};
```

Der Methodentext von M enthält einen Aufruf der Methode N, wobei der Typparameter von M und der Typ angegeben Int32 werden. Die IsGenericMethodDefinition -Eigenschaft gibt false für die -Methode N<V,int> zurück.

Hinweis

Obwohl die N<V,int> geöffnete konstruierte Methode bei der Reflektion über Klasse C nicht gefunden wird, muss sie mit generiert werden, MakeGenericMethod um C als dynamische Klasse auszugeben.

Wenn eine generische Methodendefinition generische Parameter des deklarierenden Typs enthält, gibt es eine generische Methodendefinition, die für jeden konstruierten Typ spezifisch ist. Betrachten Sie beispielsweise den folgenden C- # und 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() {...};
};
```

Im konstruierten Typ C<int> ( C(Of Integer) in Visual Basic) gibt die generische Methode M B<int, S> zurück. Im offenen Typ C<T> gibt M B<T, S> zurück. In beiden Fällen gibt die IsGenericMethodDefinition -Eigenschaft true für den zurück, der MethodInfo M darstellt.

Eine Liste der invarianten Bedingungen für begriffe, die für generische Methoden spezifisch sind, finden Sie in der IsGenericMethod -Eigenschaft. Eine Liste der invarianten Bedingungen für andere Begriffe, die in der generischen Reflektion verwendet werden, finden Sie in der IsGenericType -Eigenschaft.

Gilt für

Siehe auch