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