x:FactoryMethod-Anweisung
Gibt eine andere Methode als einen Konstruktor an, den ein XAML-Prozessor verwenden sollte, um ein Objekt nach dem Auflösen des Sicherungstyps zu initialisieren.
XAML-Attributverwendung, keine x:Arguments
<object x:FactoryMethod="methodname"...>
...
</object>
XAML-Attributverwendung, x:Arguments as Element(s)
<object x:FactoryMethod="methodname"...>
<x:Arguments>
oneOrMoreObjectElements
</x:Arguments>
</object>
XAML-Werte
Wert | Beschreibung |
---|---|
methodname |
Der Zeichenfolgenmethodenname einer Methode, die XAML-Prozessoren aufrufen, um die angegebene Instanz als object initialisieren zu können. Siehe Hinweise. |
oneOrMoreObjectElements |
Mindestens ein Objektelement für Objekte, die Factorymethodenparameter angeben. Die Bestellung ist erheblich; es gibt die Reihenfolge an, in der Argumente an die Factorymethode übergeben werden sollen. |
Hinweise
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
arbeitet auf einem Prinzip der besten Übereinstimmung für Signaturen von Factorymethoden. Der Abgleich wertet zuerst die Parameteranzahl aus. Wenn mehrere mögliche Übereinstimmungen für eine Parameteranzahl vorhanden sind, wird der Parametertyp ausgewertet, und die beste Übereinstimmung wird bestimmt. Wenn nach dieser Auswertungsphase noch unklar ist, wird 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
(entweder Attribut- oder Elementverwendung) kann zusammen mit der x:FactoryMethod
-Elementverwendung verwendet werden, dies wird jedoch nicht speziell in den Abschnitten "Verwendung" angezeigt.
x:FactoryMethod
als Element muss vor allen anderen Eigenschaftselementen stehen, muss vor allen anderen x:Arguments
stehen, die auch als Elemente bereitgestellt werden, und muss vor jedem Inhalt/Innentext/Initialisierungstext stehen.
Weitere Informationen
.NET Desktop feedback