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
.NET Desktop feedback