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.IsGenericTypeDefinition-Eigenschaft

 

Veröffentlicht: Oktober 2016

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

Type: System.Boolean

true, wenn das Type-Objekt eine generische Typdefinition darstellt, andernfalls false.

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), durch Aufrufen der MakeGenericType Methode mit einer Liste mit generisches Argument der Int32 Typ. Erhält eine Type Objekt, das dies darstellt konstruierter Typ, der GetGenericTypeDefinition Methode ruft die generische Typdefinition zurück, erneut aus.

Verwenden der IsGenericTypeDefinition Eigenschaft, um zu bestimmen, ob Sie aus dem aktuellen Typ neue Typen erstellen können. Wenn die IsGenericTypeDefinition -Eigenschaft gibt true, Sie erreichen die MakeGenericType Methode, um neue generische Typen zu erstellen.

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

Das folgende Beispiel zeigt Informationen zu einem Typ, einschließlich, und zwar unabhängig davon, ob es sich um eine generische Typdefinition ist. Informationen werden für einen konstruierten Typ, dessen Definition eines generischen Typs und einem 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
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
Zurück zum Anfang
Anzeigen: