Type.IsGenericTypeDefinition Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Geçerlinin Type , diğer genel türlerin oluşturulabileceği genel tür tanımını temsil edip etmediğini belirten bir değer alır.
public:
virtual property bool IsGenericTypeDefinition { bool get(); };
public virtual bool IsGenericTypeDefinition { get; }
member this.IsGenericTypeDefinition : bool
Public Overridable ReadOnly Property IsGenericTypeDefinition As Boolean
Özellik Değeri
true
Type nesnesi genel tür tanımını temsil ederse; değilse, false.
Örnekler
Aşağıdaki örnek, genel tür tanımı olup olmadığı da dahil olmak üzere bir tür hakkındaki bilgileri görüntüler. Bilgiler, genel tür tanımı ve sıradan bir tür için, yapılı bir tür için görüntülenir.
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
*/
open System
open System.Collections.Generic
type Test() = class end
let displayGenericTypeInfo (t: Type) =
printfn $"\n{t}"
printfn $"\tIs this a generic type definition? {t.IsGenericTypeDefinition}"
printfn $"\tIs it a generic type? {t.IsGenericType}"
if t.IsGenericType then
// If this is a generic type, display the type arguments.
let typeArguments = t.GetGenericArguments()
printfn $"\tList type arguments ({typeArguments.Length}):"
for tParam in typeArguments do
// If this is a type parameter, display its
// position.
if tParam.IsGenericParameter then
printfn $"\t\t{tParam}\t(unassigned - parameter position {tParam.GenericParameterPosition})"
else
printfn $"\t\t{tParam}"
printfn "\r\n--- Display information about a constructed type, its"
printfn " generic type definition, and an ordinary type."
// Create a Dictionary of Test objects, using strings for the keys.
let d = 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
*)
Imports System.Reflection
Imports System.Collections.Generic
Public Class Test
Private Shared Sub DisplayGenericTypeInfo(ByVal t As Type)
Console.WriteLine(vbCrLf & t.ToString())
Console.WriteLine(vbTab & "Is this a generic type definition? " _
& t.IsGenericTypeDefinition)
Console.WriteLine(vbTab & "Is it a generic type? " _
& t.IsGenericType)
If t.IsGenericType Then
' If this is a generic type, display the type arguments.
'
Dim typeArguments As Type() = t.GetGenericArguments()
Console.WriteLine(vbTab & "List type arguments (" _
& typeArguments.Length & "):")
For Each tParam As Type In typeArguments
' If this is a type parameter, display its position.
'
If tParam.IsGenericParameter Then
Console.WriteLine(vbTab & vbTab & tParam.ToString() _
& vbTab & "(unassigned - parameter position " _
& tParam.GenericParameterPosition & ")")
Else
Console.WriteLine(vbTab & vbTab & tParam.ToString())
End If
Next tParam
End If
End Sub
Public Shared Sub Main()
Console.WriteLine(vbCrLf & "--- 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.
Dim d As New Dictionary(Of String, Test)()
DisplayGenericTypeInfo(d.GetType())
DisplayGenericTypeInfo(d.GetType().GetGenericTypeDefinition())
' Display information for an ordinary type.
DisplayGenericTypeInfo(GetType(String))
End Sub
End Class
' 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
Açıklamalar
Genel tür tanımı, diğer türlerin oluşturulabileceği bir şablondur. Örneğin, C# genel tür tanımından G<T>yöntemini türü içeren Int32 genel bir bağımsız değişken listesiyle çağırarak MakeGenericType türünü G<int> (G(Of Integer)Visual Basic'te) oluşturabilir ve örneği oluşturabilirsiniz. Bu yapılı türü temsil eden bir Type nesne verildiğinde, GetGenericTypeDefinition yöntem genel tür tanımını yeniden alır.
IsGenericTypeDefinition Geçerli türden yeni türler oluşturup oluşturamayacağınızı belirlemek için özelliğini kullanın.
IsGenericTypeDefinition özelliği döndürürsetrue, yeni genel türler oluşturmak için yöntemini çağırabilirsinizMakeGenericType.
Genel yansımada kullanılan terimlere ilişkin sabit koşulların IsGenericType listesi için özellik açıklamalarına bakın.