Type.IsGenericParameter Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém um valor que indica se o Type atual representa um parâmetro de tipo na definição de um tipo ou método genérico.
public:
abstract property bool IsGenericParameter { bool get(); };
public:
virtual property bool IsGenericParameter { bool get(); };
public abstract bool IsGenericParameter { get; }
public virtual bool IsGenericParameter { get; }
member this.IsGenericParameter : bool
Public MustOverride ReadOnly Property IsGenericParameter As Boolean
Public Overridable ReadOnly Property IsGenericParameter As Boolean
Valor da propriedade
true
se o objeto Type representar um parâmetro de tipo de uma definição de tipo genérico ou de método genérico; caso contrário, false
.
Exemplos
O exemplo a seguir usa a IsGenericParameter propriedade para testar parâmetros de tipo genérico em um tipo genérico.
if ( t->IsGenericType )
{
// If this is a generic type, display the type arguments.
//
array<Type^>^typeArguments = t->GetGenericArguments();
Console::WriteLine( L"\tList type arguments ({0}):",
typeArguments->Length );
System::Collections::IEnumerator^ myEnum =
typeArguments->GetEnumerator();
while ( myEnum->MoveNext() )
{
Type^ tParam = safe_cast<Type^>(myEnum->Current);
// If this is a type parameter, display its
// position.
//
if ( tParam->IsGenericParameter )
{
Console::WriteLine(
L"\t\t{0}\t(unassigned - parameter position {1})",
tParam, tParam->GenericParameterPosition );
}
else
{
Console::WriteLine( L"\t\t{0}", tParam );
}
}
}
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);
}
}
}
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
Comentários
Type objetos que representam parâmetros de tipo genérico podem ser obtidos chamando o GetGenericArguments método de um Type objeto que representa uma definição de tipo genérico ou o GetGenericArguments método de um MethodInfo objeto que representa uma definição de método genérico.
Para um tipo genérico ou definição de método, a IsGenericParameter propriedade retorna
true
para cada elemento da matriz resultante.Para um tipo ou método construído fechado, a IsGenericParameter propriedade retorna
false
para cada elemento da matriz retornada pelo GetGenericArguments método.Para um tipo ou método construído aberto, alguns elementos da matriz podem ser tipos específicos e outros podem ser parâmetros de tipo. IsGenericParameter retorna
false
para os tipos etrue
para os parâmetros de tipo. O exemplo de código para a ContainsGenericParameters Propriedade demonstra uma classe genérica com uma mistura de tipos e parâmetros de tipo.
Para obter uma lista das condições invariáveis para termos usados na reflexão genérica, consulte os comentários da propriedade IsGenericType.