Direttiva x:FactoryMethod

Specifica un metodo diverso da un costruttore che un processore XAML deve usare per inizializzare un oggetto dopo la risoluzione del tipo di supporto.

Utilizzo degli attributi XAML, nessun argomento x:Arguments

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

Utilizzo attributi XAML, x:Arguments come elementi

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

Valori XAML

Valore Descrizione
methodname Nome del metodo stringa di un metodo chiamato dai processori XAML per inizializzare l'istanza specificata come object. Vedere la sezione Osservazioni.
oneOrMoreObjectElements Uno o più elementi oggetto per gli oggetti che specificano i parametri del metodo factory. L'ordine è significativo; indica l'ordine in cui gli argomenti devono essere passati al metodo factory.

Osservazioni

Se methodname è un metodo di istanza, non può essere qualificato.

I metodi statici come metodi factory sono supportati. Se methodname è un metodo statico, methodname viene fornito come typeName.methodName combinazione, dove typeName denomina la classe che definisce il metodo factory statico. typeName può essere qualificato con prefisso se si fa riferimento a un tipo in un xmlns mappato. typeName può essere un tipo diverso da typeof(object).

Il metodo factory deve essere un metodo pubblico dichiarato del tipo che esegue il backup dell'elemento oggetto pertinente.

Il metodo factory deve restituire un'istanza assegnabile all'oggetto pertinente. I metodi factory non devono mai restituire null.

x:Arguments opera su un principio di corrispondenza ottimale per le firme dei metodi factory. La corrispondenza valuta prima il conteggio dei parametri. Se sono presenti più corrispondenze possibili per un conteggio dei parametri, il tipo di parametro viene quindi valutato e viene determinata la corrispondenza migliore. Se dopo questa fase di valutazione c'è ancora ambiguità, il comportamento del processore XAML non è definito.

L'utilizzo x:FactoryMethod dell'elemento non è l'utilizzo degli elementi di proprietà nel senso tipico, perché il markup della direttiva non fa riferimento al tipo dell'elemento oggetto contenitore. È previsto che l'utilizzo degli elementi sia meno comune rispetto all'utilizzo degli attributi. x:Arguments (utilizzo di attributi o elementi) può essere usato insieme all'utilizzo x:FactoryMethod degli elementi, ma questo non è illustrato in modo specifico nelle sezioni Utilizzo.

x:FactoryMethod come elemento deve precedere qualsiasi altro elemento di proprietà, deve precedere qualsiasi x:Arguments elemento anche fornito come elementi e deve precedere qualsiasi testo di contenuto/testo interno/inizializzazione.

Vedi anche