Partilhar via


x:Diretiva 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 atributos XAML, sem x:Arguments

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

Uso de atributos 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. Ver 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.

Métodos estáticos como métodos de fábrica são suportados. Se methodname for um método estático, methodname é fornecido como uma combinação typeName.methodName, onde typeName nomeia a classe que define o método estático de fábrica. 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 apoia o elemento object relevante.

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

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

O uso do elemento x:FactoryMethod 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 o 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 o uso de x:FactoryMethod elemento, 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 x:Arguments também fornecido como elementos e deve preceder qualquer conteúdo/texto interno/texto de inicialização.

Ver também