Freigeben über


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