(0) exportieren Drucken
Alle erweitern
Erweitern Minimieren
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Type.IsGenericTypeDefinition-Eigenschaft

Ruft einen Wert ab, der angibt, ob der aktuelle Type eine generische Typdefinition darstellt, aus der andere generische Typen konstruiert werden können.

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

public virtual bool IsGenericTypeDefinition { get; }

Eigenschaftswert

Typ: System.Boolean
true , wenn das Type-Objekt eine generische Typdefinition darstellt, andernfalls false.

Eine generische Typdefinition ist eine Vorlage, aus der andere Typen konstruiert werden können. Beispiel: Aus der generischen Typdefinition G<T> (ausgedrückt in der C#-Syntax; dies ist G(Of T) in Visual Basic und generic <typename T> ref class G in C++) können Sie den G<int>-Typ (G(Of Integer) in Visual Basic) konstruieren und instanziieren. Rufen Sie hierzu die MakeGenericType-Methode mit einer generischen Argumentliste auf, die den Int32-Typ enthält. Bei einem Type-Objekt, das diesen konstruierten Typ darstellt, können Sie mit der GetGenericTypeDefinition-Methode wieder die generische Typdefinition abrufen.

Verwenden Sie die IsGenericTypeDefinition-Eigenschaft, um zu bestimmen, ob Sie aus dem aktuellen Typ neue Typen erstellen können. Wenn die IsGenericTypeDefinition-Eigenschaft true zurückgibt, rufen Sie die MakeGenericType-Methode auf, um neue generische Typen zu erstellen.

Eine Liste der unveränderlichen Bedingungen für allgemeine Begriffe, die in generischer Reflektion verwendet werden, finden Sie in den Hinweisen zur IsGenericType-Eigenschaft.

Im folgenden Beispiel werden Informationen über einen Typ angezeigt, z. B., ob es sich um eine generische Typdefinition handelt. Es werden Informationen über einen konstruierten Typ, über seine generische Typdefinition und über einen normalen Typ angezeigt.


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

public class Test
{
    private static void DisplayGenericTypeInfo(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);

        if (t.IsGenericType)
        {
            // If this is a generic type, display the type arguments.
            //
            Type[] typeArguments = t.GetGenericArguments();

            Console.WriteLine("\tList type arguments ({0}):", 
                typeArguments.Length);

            foreach (Type tParam in typeArguments)
            {
                // If this is a type parameter, display its
                // position.
                //
                if (tParam.IsGenericParameter)
                {
                    Console.WriteLine("\t\t{0}\t(unassigned - parameter position {1})",
                        tParam,
                        tParam.GenericParameterPosition);
                }
                else
                {
                    Console.WriteLine("\t\t{0}", tParam);
                }
            }
        }
    }

    public static void Main()
    {
        Console.WriteLine("\r\n--- Display information about a constructed type, its");
        Console.WriteLine("    generic type definition, and an ordinary type.");

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

        // Display information for the constructed type and its generic
        // type definition.
        DisplayGenericTypeInfo(d.GetType());
        DisplayGenericTypeInfo(d.GetType().GetGenericTypeDefinition());

        // Display information for an ordinary type.
        DisplayGenericTypeInfo(typeof(string));
    }
}

/* This example produces the following output:

--- Display information about a constructed type, its
    generic type definition, and an ordinary type.

System.Collections.Generic.Dictionary[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[TKey,TValue]
        Is this a generic type definition? True
        Is it a generic type? True
        List type arguments (2):
                TKey    (unassigned - parameter position 0)
                TValue  (unassigned - parameter position 1)

System.String
        Is this a generic type definition? False
        Is it a generic type? False
 */


.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

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

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft