Type.IsGenericTypeDefinition Właściwość

Definicja

Pobiera wartość wskazującą, czy bieżący Type reprezentuje definicję typu ogólnego, z której można konstruować inne typy ogólne.

public virtual bool IsGenericTypeDefinition { get; }

Wartość właściwości

true Type jeśli obiekt reprezentuje definicję typu ogólnego; w przeciwnym razie . false

Przykłady

Poniższy przykład przedstawia informacje o typie, w tym informacje o tym, czy jest to definicja typu ogólnego. Informacje są wyświetlane dla skonstruowanego typu, dla jego definicji typu ogólnego i dla zwykłego typu.

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
 */

Uwagi

Definicja typu ogólnego to szablon, z którego można tworzyć inne typy. Na przykład z definicji G<T> typu ogólnego (wyrażonej w składni języka C#; G(Of T) w języku Visual Basic lub generic <typename T> ref class G C++) można skonstruować i utworzyć wystąpienie typu G<int> (G(Of Integer) w Visual Basic), wywołując MakeGenericType metodę z ogólną listą argumentów zawierającą Int32 typ. Type Biorąc pod uwagę obiekt reprezentujący ten skonstruowany typ, GetGenericTypeDefinition metoda ponownie pobiera definicję typu ogólnego.

IsGenericTypeDefinition Użyj właściwości , aby określić, czy można tworzyć nowe typy na podstawie bieżącego typu. IsGenericTypeDefinition Jeśli właściwość zwróci truewartość , możesz wywołać metodę MakeGenericType , aby utworzyć nowe typy ogólne.

Aby zapoznać się z listą niezmiennych warunków warunków używanych w odbiciu ogólnym, zobacz IsGenericType uwagi dotyczące właściwości.

Dotyczy

Produkt Wersje
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Zobacz też