Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Type.GetGenericTypeDefinition-Methode: ()

 

Veröffentlicht: Oktober 2016

Gibt ein Type-Objekt zurück, das eine generische Typdefinition darstellt, aus der der aktuelle generische Typ konstruiert werden kann.

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

public virtual Type GetGenericTypeDefinition()

Rückgabewert

Type: System.Type

Ein Type-Objekt, das einen generischen Typ darstellt, aus dem der aktuelle Typ konstruiert werden kann.

Exception Condition
InvalidOperationException

Der aktuelle Typ ist kein generischer Typ. Das heißt, IsGenericType gibt false zurück.

NotSupportedException

Die aufgerufene Methode wird in der Basisklasse nicht unterstützt. Abgeleitete Klassen müssen eine Implementation angeben.

Eine generische Typdefinition ist eine Vorlage aus der anderen Typen konstruiert werden können. Z. B. von der generischen Typdefinition G<T> (ausgedrückt in C#-Syntax; G(Of T) in Visual Basic oder generic <typename T> ref class G in C++) können Sie erstellen und instanziieren Sie den Typ G<int> (G(Of Integer) in Visual Basic). Erhält eine Type Objekt, das dies darstellt konstruierter Typ, der GetGenericTypeDefinition Methodenrückgabe die generische Typdefinition.

Wenn zwei konstruierte Typen aus der gleichen generischen Typdefinition erstellt werden, verwenden Sie die gleichen Typargumente, die GetGenericTypeDefinition Methodenrückgabe identisch Type Objekt für beide Typen.

Beim Aufrufen der GetGenericTypeDefinition Methode auf eine Type Objekt, das bereits eine generische Typdefinition darstellt gibt das aktuelle Type.

System_CAPS_importantWichtig

Ein Array von generischen Typen ist nicht selbst generisch. In der C#-Code A<int>[] v; oder Visual Basic-Code Dim v() As A(Of Integer), den Typ der Variable v ist nicht generisch. Verwendung IsGenericType zu bestimmen, ob ein Typ generisch ist, vor dem Aufruf ist GetGenericTypeDefinition.

Eine Liste der invarianten Bedingungen für Begriffe in generischen Reflektion verwendet, finden Sie unter der IsGenericType Eigenschaft "Hinweise".

Das folgende Codebeispiel erstellt eine Instanz eines konstruierten Typs mithilfe des normalen instanzerstellung und verwendet dann die GetType und GetGenericTypeDefinition Methoden zum Abrufen von den konstruierten Typ und die generische Typdefinition. Dieses Beispiel verwendet die generische Dictionary<TKey, TValue> Typ, der den konstruierten Typ darstellt eine Dictionary<TKey, TValue> von Test Objekte mit Zeichenfolgenschlüssel.

using System;
using System.Reflection;
using System.Collections.Generic;

public class Test
{
    public static void Main()
    {
        Console.WriteLine("\r\n--- Get the generic type that defines a constructed type.");

        // Create a Dictionary of Test objects, using strings for the
        // keys.       
        Dictionary<string, Test> d = new Dictionary<string, Test>();

        // Get a Type object representing the constructed type.
        //
        Type constructed = d.GetType();
        DisplayTypeInfo(constructed);

        Type generic = constructed.GetGenericTypeDefinition();
        DisplayTypeInfo(generic);
    }

    private static void DisplayTypeInfo(Type t)
    {
        Console.WriteLine("\r\n{0}", t);
        Console.WriteLine("\tIs this a generic type definition? {0}", 
            t.IsGenericTypeDefinition);
        Console.WriteLine("\tIs it a generic type? {0}", 
            t.IsGenericType);
        Type[] typeArguments = t.GetGenericArguments();
        Console.WriteLine("\tList type arguments ({0}):", typeArguments.Length);
        foreach (Type tParam in typeArguments)
        {
            Console.WriteLine("\t\t{0}", tParam);
        }
    }
}

/* This example produces the following output:

--- Get the generic type that defines a constructed type.

System.Collections.Generic.Dictionary`2[System.String,Test]
        Is this a generic type definition? False
        Is it a generic type? True
        List type arguments (2):
                System.String
                Test

System.Collections.Generic.Dictionary`2[TKey,TValue]
        Is this a generic type definition? True
        Is it a generic type? True
        List type arguments (2):
                TKey
                TValue
 */

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 2.0
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: