Sdílet prostřednictvím


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 je methodname statickou metodou, methodname je k dispozici jako kombinace typeName.methodName, kde typeName pojmenuje třídu, která definuje statickou metodu továrny. typeName lze kvalifikovat předponou, pokud odkazujete na typ v mapovaných xmlnech. 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.

x:FactoryMethod použití elementu 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í elementu, ale to není výslovně uvedeno v částech Využití.

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

Viz také

  • direktivy x:Arguments