x:FactoryMethod-Direktive
Gibt eine andere Methode als einen Konstruktor an, den ein XAML-Prozessor zum Initialisieren eines Objekts nach dem Auflösen seines Sicherungstyps verwenden soll.
XAML-Attributverwendung, keine x:Arguments
<object x:FactoryMethod="methodname"...>
...
</object>
XAML-Attributverwendung, x:Arguments als Element(n)
<object x:FactoryMethod="methodname"...>
<x:Arguments>
oneOrMoreObjectElements
</x:Arguments>
</object>
XAML-Werte
Wert | Beschreibung |
---|---|
methodname |
Der Zeichenfolgenmethodenname einer Methode, die VON XAML-Prozessoren aufgerufen wird, um die als object angegebene Instanz zu initialisieren. Siehe Anmerkungen. |
oneOrMoreObjectElements |
Mindestens ein Objektelement für Objekte, die Factorymethodenparameter angeben. Reihenfolge ist wichtig; sie gibt die Reihenfolge an, in der Argumente an die Factorymethode übergeben werden sollen. |
Bemerkungen
Wenn methodname
eine Instanzmethode ist, kann sie nicht qualifiziert werden.
Statische Methoden als Factorymethoden werden unterstützt. Wenn methodname
eine statische Methode ist, wird methodname
als typeName.methodName
Kombination bereitgestellt, wobei typeName
die Klasse benennt, die die statische Factorymethode definiert.
typeName
kann präfixfähig sein, wenn auf einen Typ in einem zugeordneten XMLns verwiesen wird.
typeName
kann ein anderer Typ als typeof(object)
sein.
Die Factorymethode muss eine deklarierte öffentliche Methode des Typs sein, der das relevante Objektelement zurückgibt.
Die Factorymethode muss eine Instanz zurückgeben, die dem relevanten Objekt zugewiesen werden kann. Factorymethoden sollten niemals NULL zurückgeben.
x:Arguments
funktioniert auf einem Prinzip der besten Übereinstimmung für Signaturen von Factorymethoden. Der Abgleich wertet die Parameteranzahl zuerst aus. Wenn mehr als eine mögliche Übereinstimmung für eine Parameteranzahl vorhanden ist, wird der Parametertyp ausgewertet, und die beste Übereinstimmung wird bestimmt. Wenn nach dieser Auswertungsphase noch Mehrdeutigkeit besteht, ist das XAML-Prozessorverhalten nicht definiert.
Die x:FactoryMethod
Elementverwendung ist keine Eigenschaftselementverwendung im typischen Sinne, da das Direktivenmarkup nicht auf den Typ des enthaltenden Objektelements verweist. Es wird erwartet, dass die Elementverwendung weniger häufig ist als die Attributverwendung.
x:Arguments
(Attribut- oder Elementnutzung) kann zusammen mit x:FactoryMethod
Elementverwendung verwendet werden, dies wird jedoch nicht speziell in den Abschnitten "Verwendung" gezeigt.
x:FactoryMethod
als Element muss allen anderen Eigenschaftselementen vorausgehen, allen x:Arguments
auch als Elemente bereitgestellt werden, und allen Inhalten/inneren Text/Initialisierungstext vorangestellt sein.
Siehe auch
.NET Desktop feedback