(0) exportieren Drucken
Alle erweitern

MethodInfo.IsGenericMethodDefinition-Eigenschaft

Hinweis: Diese Eigenschaft ist neu in .NET Framework, Version 2.0.

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

Namespace: System.Reflection
Assembly: mscorlib (in mscorlib.dll)

public override bool IsGenericMethodDefinition { get; }
/** @property */
public boolean get_IsGenericMethodDefinition ()

public override function get IsGenericMethodDefinition () : boolean

Eigenschaftenwert

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

Wenn die aktuelle MethodInfo eine generische Methodendefinition darstellt, gilt Folgendes:

Mit der IsGenericMethodDefinition-Eigenschaft können Sie ermitteln, ob den Typparametern einer generischen Methode Typargumente zugewiesen wurden. Wenn Typargumente zugewiesen wurden, wird durch die IsGenericMethodDefinition-Eigenschaft selbst dann false zurückgegeben, wenn einige der Typargumente Type-Objekte sind, die Typparameter von einschließenden Typen darstellen. Betrachten Sie beispielsweise den folgenden C#-, Visual Basic- und C++-Code:

class C
{
    T N<T,U>(T t, U u) {...}
    public V M<V>(V v)
    {
        return N<V,int>(v, 42);
    }
}

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

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, in dem der Typparameter von M und der Typ Int32 angegeben werden. Mit der IsGenericMethodDefinition-Eigenschaft wird für die N<V,int>-Methode der Wert false zurückgegeben.

HinweisHinweis

Obwohl die offen konstruierte N<V,int>-Methode beim Reflektieren über die Klasse C nicht gefunden wird, muss sie mit MakeGenericMethod generiert werden, damit C als dynamische Klasse ausgegeben werden kann.

Wenn eine generische Methodendefinition generische Parameter vom deklarierenden Typ umfasst, steht für jeden konstruierten Typ eine spezifische generische Methodendefinition zur Verfügung. Betrachten Sie beispielsweise den folgenden C#- und Visual Basic-Code:

class B<U,V> {}
class C<T> { public B<T,S> M<S>() {...}}

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 

generic <typename U, typename V> ref class B {};
generic <typename T> ref class C
{
public:
    generic <typename S> B<T,S>^ M() {...};
};

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

Eine Liste der unveränderlichen Bedingungen für spezifische Begriffe zu generischen Methoden finden Sie unter der IsGenericMethod-Eigenschaft. Eine Liste der unveränderlichen Bedingungen für andere Begriffe, die in generischer Reflektion verwendet werden, finden Sie unter der IsGenericType-Eigenschaft.

Im folgenden Codebeispiel wird die IsGenericMethodDefinition-Eigenschaft für eine Meldung verwendet, in der angezeigt wird, ob eine MethodInfo eine generische Methodendefinition darstellt.

Dieses Beispiel ist Teil eines umfangreicheren Beispiels für die MakeGenericMethod-Methode.

Console.WriteLine("\tIs this a generic method definition? {0}", 
    mi.IsGenericMethodDefinition);

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

.NET Framework

Unterstützt in: 2.0

.NET Compact Framework

Unterstützt in: 2.0
Anzeigen:
© 2014 Microsoft