Compartilhar via


Diretiva x:FactoryMethod

Especifica um método diferente de um construtor que um processador XAML deve usar para inicializar um objeto depois de resolver seu tipo de suporte.

Uso de atributo XAML, sem x:Arguments

<object x:FactoryMethod="methodname"...>  
  ...  
</object>  

Uso de atributo XAML, x:Argumentos como elemento(s)

<object x:FactoryMethod="methodname"...>  
  <x:Arguments>  
    oneOrMoreObjectElements  
  </x:Arguments>  
</object>  

Valores XAML

Valor Descrição
methodname O nome do método string de um método que os processadores XAML chamam para inicializar a instância especificada como object. Consulte Observações.
oneOrMoreObjectElements Um ou mais elementos de objeto para objetos que especificam parâmetros de método de fábrica. A ordem é significativa; significa a ordem em que os argumentos devem ser passados para o método de fábrica.

Comentários

Se methodname for um método de instância, ele não poderá ser qualificado.

Há suporte para métodos estáticos como métodos de fábrica. Se methodname é um método estático, é fornecido como uma typeName.methodName combinação, methodname onde typeName nomeia a classe que define o método de fábrica estático. typeName pode ser qualificado por prefixo se se referir a um tipo em um xmlns mapeado. typeName pode ser um tipo diferente do typeof(object).

O método factory deve ser um método público declarado do tipo que faz backup do elemento de objeto relevante.

O método factory deve retornar uma instância que é atribuível ao objeto relevante. Os métodos de fábrica nunca devem retornar null.

x:Arguments opera em um princípio de melhor correspondência para assinaturas de métodos de fábrica. A correspondência avalia a contagem de parâmetros primeiro. Se houver mais de uma correspondência possível para uma contagem de parâmetros, o tipo de parâmetro será avaliado e a melhor correspondência será determinada. Se ainda houver ambiguidade após essa fase de avaliação, o comportamento do processador XAML será indefinido.

O x:FactoryMethod uso do elemento não é o uso do elemento de propriedade no sentido típico, porque a marcação de diretiva não faz referência ao tipo do elemento objeto que contém. Espera-se que o uso de elementos seja menos comum do que o uso de atributos. x:Arguments (uso de atributo ou elemento) pode ser usado junto com x:FactoryMethod o uso de elementos, mas isso não é mostrado especificamente nas seções Uso.

x:FactoryMethod como um elemento deve preceder quaisquer outros elementos de propriedade, deve preceder qualquer elemento também fornecido como e deve preceder qualquer x:Arguments conteúdo/texto interno/texto de inicialização.

Confira também