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