x:Arguments, directive
Packages des arguments de construction pour une déclaration d’élément d’objet sans paramètre en XAML ou pour une déclaration d’objet de méthode de fabrique.
Utilisation de l’élément XAML (constructeur sans paramètre)
<object ...>
<x:Arguments>
oneOrMoreObjectElements
</x:Arguments>
</object>
Utilisation de l’élément XAML (méthode de fabrique)
<object x:FactoryMethod="methodName"...>
<x:Arguments>
oneOrMoreObjectElements
</x:Arguments>
</object>
Valeurs XAML
Valeur | Description |
---|---|
oneOrMoreObjectElements |
Un ou plusieurs éléments d’objet qui spécifient des arguments à passer au constructeur sans paramètre de stockage ou à la méthode de fabrique. L’utilisation classique consiste à utiliser du texte d’initialisation dans les éléments d’objet pour spécifier les valeurs d’argument réelles. Consultez la section Exemples. L’ordre des éléments est significatif. Les types XAML dans l’ordre doivent correspondre aux types et à l’ordre de type de la surcharge de méthode de stockage ou de méthode de stockage. |
methodName |
Nom de la méthode de fabrique qui doit traiter tous les x:Arguments arguments. |
Dépendances
x:FactoryMethod
peut modifier l’étendue et le comportement où x:Arguments
il s’applique.
Si aucune valeur n’est x:FactoryMethod
spécifiée, x:Arguments
s’applique à d’autres signatures (non par défaut) des constructeurs de stockage.
Si x:FactoryMethod
elle est spécifiée, x:Arguments
s’applique à une surcharge de la méthode nommée.
Notes
XAML 2006 peut prendre en charge l’initialisation non par défaut par le biais du texte d’initialisation. Toutefois, l’application pratique d’une technique de construction de texte d’initialisation est limitée. Le texte d’initialisation est traité comme une chaîne de texte unique ; Par conséquent, elle ajoute uniquement une fonctionnalité d’initialisation de paramètre unique, sauf si un convertisseur de type est défini pour le comportement de construction qui peut analyser des éléments d’informations personnalisés et des délimiteurs personnalisés de la chaîne. En outre, la chaîne de texte en logique objet est potentiellement un convertisseur de type par défaut natif de l’analyseur XAML donné pour la gestion des primitives autres qu’une chaîne true.
L’utilisation x:Arguments
XAML n’est pas l’utilisation des éléments de propriété dans le sens classique, car le balisage de directive ne référence pas le type de l’élément objet contenant. Il est plus semblable à d’autres directives telles que x:Code
l’emplacement où l’élément délimite une plage dans laquelle le balisage doit être interprété comme autre que la valeur par défaut pour le contenu enfant. Dans ce cas, le type XAML de chaque élément objet communique des informations sur les types d’arguments, qui est utilisé par les analyseurs XAML pour déterminer quelle signature de méthode de fabrique de constructeur spécifique une x:Arguments
utilisation tente de référencer.
x:Arguments
pour qu’un élément d’objet en cours de construction doit précéder d’autres éléments de propriété, de contenu, de texte interne ou de chaînes d’initialisation de l’élément objet. Les éléments d’objet au sein x:Arguments
de l’objet peuvent inclure des attributs et des chaînes d’initialisation, comme permis par ce type XAML et son constructeur de stockage ou sa méthode de fabrique. Pour l’objet ou les arguments, vous pouvez spécifier des types XAML personnalisés ou des types XAML qui se trouvent autrement en dehors de l’espace de noms XAML par défaut en référençant les mappages de préfixes établis.
Les processeurs XAML utilisent les instructions suivantes pour déterminer comment les arguments spécifiés dans x:Arguments
doivent être utilisés pour construire un objet. Si x:FactoryMethod
elle est spécifiée, les informations sont comparées à celles spécifiées x:FactoryMethod
(notez que la valeur du nom de la méthode est le nom de x:FactoryMethod
la méthode et que la méthode nommée peut avoir des surcharges. Si x:FactoryMethod
elle n’est pas spécifiée, les informations sont comparées à l’ensemble de toutes les surcharges de constructeur public de l’objet. La logique de traitement XAML compare ensuite le nombre de paramètres et sélectionne la surcharge avec une arité correspondante. S’il existe plusieurs correspondances, le processeur XAML doit comparer les types des paramètres en fonction des types XAML des éléments d’objet fournis. S’il existe encore plusieurs correspondances, le comportement du processeur XAML n’est pas défini. Si une x:FactoryMethod
valeur est spécifiée, mais que la méthode ne peut pas être résolue, un processeur XAML doit lever une exception.
Une utilisation d’attribut <x:Arguments>string</x:Arguments>
XAML est techniquement possible. Toutefois, cela ne fournit aucune fonctionnalité au-delà de ce qui peut être fait autrement par le biais de convertisseurs de texte et de type d’initialisation, et l’utilisation de cette syntaxe n’est pas l’intention de conception des fonctionnalités de méthode de fabrique XAML 2009.
Exemples
L’exemple suivant montre une signature de constructeur sans paramètre, puis l’utilisation XAML de x:Arguments
cette signature.
public class Food {
private string _name;
private Int32 _calories;
public Food(string name, Int32 calories) {
_name=name;
_calories=calories;
}
}
<my:Food>
<x:Arguments>
<x:String>Apple</x:String>
<x:Int32>150</x:Int32>
</x:Arguments>
</my:Food>
L’exemple suivant montre une signature de méthode de fabrique cible, puis l’utilisation XAML de x:Arguments
cette signature.
public Food TryLookupFood(string name)
{
switch (name) {
case "Apple": return new Food("Apple",150);
case "Chocolate": return new Food("Chocolate",200);
case "Cheese": return new Food("Cheese", 450);
default: {return new Food(name,0);
}
}
<my:Food x:FactoryMethod="TryLookupFood">
<x:Arguments>
<x:String>Apple</x:String>
</x:Arguments>
</my:Food>
Voir aussi
.NET Desktop feedback