MethodInfo.IsGenericMethodDefinition Eigenschaft

Definition

Ruft einen Wert ab, der angibt, ob der aktuelle Wert die Definition einer generischen MethodInfo 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

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 eine MethodInfo generische Methodendefinition darstellt.

Dieses Beispiel ist Teil eines größeren Beispiels, das für die MakeGenericMethod Methode bereitgestellt 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 der aktuelle MethodInfo Wert 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 Objekte sind Type , die Typparameter von eingeschlossenen Typen darstellen. Stellen Sie sich beispielsweise den folgende Code vor:

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

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

Note

Obwohl die geöffnete konstruierte Methode N<V,int> beim Reflektieren der Klasse C nicht auftritt, muss sie mithilfe MakeGenericMethod von C als dynamische Klasse generiert werden.

Wenn eine generische Methodendefinition generische Parameter des deklarierenden Typs enthält, gibt es eine generische Methodendefinition, die für jeden konstruierten Typ spezifisch ist. Stellen Sie sich beispielsweise den folgende Code vor:

```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 geöffneten Typ C<T>gibt M zurück B<T, S>. In beiden Fällen gibt true die IsGenericMethodDefinition Eigenschaft für den MethodInfo Wert M zurück.

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

Gilt für:

Weitere Informationen