x:FactoryMethod – direktiva

Určuje jinou metodu než konstruktor, který by měl procesor XAML použít k inicializaci objektu po vyřešení jeho záložního typu.

Použití atributu XAML, bez argumentů x:

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

Použití atributu XAML, x:Arguments jako elementy

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

Hodnoty XAML

Hodnota Popis
methodname Název řetězcové metody metody, kterou procesory XAML volají inicializovat instanci zadanou jako object. Viz poznámky.
oneOrMoreObjectElements Jeden nebo více elementů objektu pro objekty, které určují parametry metody továrny. Pořadí je významné; označuje pořadí, ve kterém mají být argumenty předány metodě továrny.

Poznámky

Pokud methodname je metoda instance, nelze ji kvalifikovat.

Podporují se statické metody jako metody továrny. Pokud methodname je statická metoda, methodname je poskytována typeName.methodName jako kombinace, kde typeName pojmenuje třídu, která definuje statickou metodu továrny. typeName pokud odkazujete na typ v mapovaných xmlnech, může být kvalifikovaný předpona. typeName může být jiný typ než typeof(object).

Metoda továrny musí být deklarovanou veřejnou metodou typu, která zálohuje příslušný prvek objektu.

Metoda továrny musí vrátit instanci, která je přiřaditelná příslušnému objektu. Metody továrny by nikdy neměly vracet hodnotu null.

x:Arguments funguje na principu nejlepší shody pro podpisy metod výroby. Porovnávání vyhodnocuje počet parametrů jako první. Pokud je pro počet parametrů více než jedna možná shoda, vyhodnotí se typ parametru a určí se nejlepší shoda. Pokud je po této fázi vyhodnocení stále nejednoznačnost, chování procesoru XAML není definováno.

Použití elementu x:FactoryMethod není použití elementu vlastnosti v typickém smyslu, protože direktiva značky neodkazuje na typ objektu objektu. Očekává se, že využití elementů je méně běžné než využití atributů. x:Arguments (použití atributu nebo elementu) lze použít spolu s x:FactoryMethod použitím elementu, ale to není výslovně uvedeno v částech Využití.

x:FactoryMethod jako prvek musí předcházet jakýmkoli jiným prvkům vlastnosti, musí předcházet všem x:Arguments také zadaným prvkům a musí předcházet veškerý obsah/vnitřní text/inicializace textu.

Viz také