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
.NET Desktop feedback