Dela via


x:FactoryMethod-direktiv

Anger en annan metod än en konstruktor som en XAML-processor ska använda för att initiera ett objekt efter att ha löst dess bakgrundstyp.

XAML-attributanvändning, inga x:Argument

<object x:FactoryMethod="methodname"...>  
  ...  
</object>  

XAML-attributanvändning, x:Argument som element

<object x:FactoryMethod="methodname"...>  
  <x:Arguments>  
    oneOrMoreObjectElements  
  </x:Arguments>  
</object>  

XAML-värden

Värde Beskrivning
methodname Strängmetodens namn på en metod som XAML-processorer anropar för att initiera den instans som anges som object. Se Kommentarer.
oneOrMoreObjectElements Ett eller flera objektelement för objekt som anger fabriksmetodparametrar. Ordningen är betydande; den anger i vilken ordning argumenten ska skickas till fabriksmetoden.

Anmärkningar

Om methodname är en instansmetod kan den inte kvalificeras.

Statiska metoder som fabriksmetoder stöds. Om methodname är en statisk metod tillhandahålls methodname som en typeName.methodName kombination, där typeName namnger klassen som definierar metoden static factory. typeName kan vara prefixkvalificerade om du refererar till en typ i en mappad xmlns. typeName kan vara en annan typ än typeof(object).

Fabriksmetoden måste vara en deklarerad offentlig metod av den typ som stöder det relevanta objektelementet.

Fabriksmetoden måste returnera en instans som kan tilldelas till det relevanta objektet. Fabriksmetoder bör aldrig returnera null.

x:Arguments fungerar enligt principen om bästa matchning för signaturer av fabriksmetoder. Matchning utvärderar parameterantalet först. Om det finns fler än en möjlig matchning för ett parameterantal utvärderas parametertypen och bästa matchning bestäms. Om det fortfarande finns tvetydigheter efter den här utvärderingsfasen är XAML-processorbeteendet odefinierat.

Den x:FactoryMethod elementanvändningen är inte användning av egenskapselement i typisk mening, eftersom direktivmarkeringen inte refererar till det innehållande objektelementets typ. Det förväntas att elementanvändningen är mindre vanlig än attributanvändning. x:Arguments (antingen attribut- eller elementanvändning) kan användas tillsammans med x:FactoryMethod elementanvändning, men detta visas inte specifikt i avsnitten Användning.

x:FactoryMethod som element måste föregå andra egenskapselement, måste föregå alla x:Arguments som även tillhandahålls som element och måste föregå allt innehåll/inre text/initieringstext.

Se även