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 objectinitialisieren 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