Compartilhar via


Genéricos em XAML

A.NET Framework XAML Services conforme implementado na System.Xaml oferece suporte para o uso de tipos genéricos do CLR. Esse suporte inclui especificando as restrições de genéricos, como um argumento de tipo e impor a restrição chamando o apropriado Add método para casos de coleção genérica. Este tópico descreve os aspectos de usar e fazer referência a tipos genéricos em XAML.

X:TypeArguments

x:TypeArgumentsuma diretiva é definida pela linguagem XAML. Quando ele é usado como um membro de um tipo XAML que é feito por um tipo genérico, x:TypeArguments passa os argumentos de tipo de restrição de genérico para o construtor de backup. Para obter a sintaxe de referência que pertence.NET Framework XAML Services use de x:TypeArguments, que inclui exemplos de sintaxe, consulte Diretiva de X:TypeArguments.

Porque x:TypeArguments usa uma cadeia de caracteres e tem o apoio do conversor de tipo, normalmente é declarada no uso XAML como um atributo.

No fluxo de nó de XAML, as informações são declarados por x:TypeArguments pode ser obtido em XamlType.TypeArguments em um StartObject posição no fluxo de nó. O valor de retorno de XamlType.TypeArguments é uma lista de XamlType valores. Determinar se um tipo XAML representa um tipo genérico que pode ser feita chamando XamlType.IsGeneric.

Regras e convenções de sintaxe para genéricos em XAML

No XAML, um tipo genérico deve sempre ser representado como um genérico restrito; um genérico irrestrito nunca está presente no sistema de tipos XAML ou um fluxo de nó XAML e não pode ser representado na marcação XAML. Um genérico pode ser referenciado dentro de sintaxe de atributo XAML para casos em que é uma restrição de tipo aninhado de um genérico que está sendo referenciado por x:TypeArguments, ou em casos onde x:Type fornece uma referência de tipo CLR para um tipo genérico. Isso é suportado através do classeXamlTypeTypeConverter , definido pelo.NET Framework XAML Services.

Habilitado por formulário de sintaxe de atributo XAML XamlTypeTypeConverter altera o MSIL típico / convenção de sintaxe CLR que usa o ângulo colchetes para tipos e restrições de genéricos e substitui em vez disso, os parênteses para o recipiente de restrição. For an example, see Diretiva de X:TypeArguments.

Genéricos e recursos de 2009 XAML

Se você usar o XAML 2009 em vez de mapeamento do CLR basear tipos para obter os tipos XAML primitivos de linguagem comum, você pode usar tipos internos de XAML 2009 como itens de informações em x:TypeArguments. Por exemplo, você poderia declarar o seguinte (prefixo mapeamentos não mostrados, mas x é o namespace XAML de linguagem XAML para 2009 de XAML):

<my:BusinessObject x:TypeArguments="x:String,x:Int32"/>

Suporte a genéricos no WPF e outras estruturas de v 3.5

Para uso do XAML 2006 ao direcionamento especificamente o WPF, X:Class também deve ser fornecida no mesmo elemento como x:TypeArguments, e esse elemento deve ser o elemento raiz em um documento XAML. O elemento raiz deve mapear para um tipo genérico com o argumento de pelo menos um tipo. An example is PageFunction<T>.

Possíveis soluções alternativas para suportar os usos genéricos incluem a definição de uma extensão de marcação personalizada que pode retornar tipos genéricos ou fornecendo uma quebra de definição que deriva de um tipo genérico, mas nivela restrição genérica na sua própria definição de classe de classe.

No WPF e o direcionamento de .NET Framework 4, você pode usar os recursos de 2009 em XAML juntamente com x:TypeArguments, mas somente para o XAML livre (XAML não é marcação-compilado). Compilado de marcação XAML para WPF e o formulário BAML do XAML não suportam atualmente os recursos e palavras-chave de XAML de 2009.

Fluxos de trabalho personalizados no Windows Workflow Foundation para .NET Framework 3.5 não suportam o uso XAML genérico.

Consulte também

Referência

Diretiva de X:TypeArguments

Diretiva X:Class

Outros recursos

Tipos internos primitivos comum de linguagem XAML