x:Arguments Yönergesi
XAML'de parametresiz oluşturucu nesne öğesi bildirimi veya fabrika yöntemi nesne bildirimi için yapı bağımsız değişkenlerini paketler.
XAML Öğesi Kullanımı (Parametresiz oluşturucu)
<object ...>
<x:Arguments>
oneOrMoreObjectElements
</x:Arguments>
</object>
XAML Öğesi Kullanımı (fabrika yöntemi)
<object x:FactoryMethod="methodName"...>
<x:Arguments>
oneOrMoreObjectElements
</x:Arguments>
</object>
XAML Değerleri
Değer | Tanım |
---|---|
oneOrMoreObjectElements |
Parametresiz olmayan oluşturucu veya fabrika yöntemine geçirilecek bağımsız değişkenleri belirten bir veya daha fazla nesne öğesi. Tipik kullanım, gerçek bağımsız değişken değerlerini belirtmek için nesne öğeleri içinde başlatma metni kullanmaktır. Örnekler bölümüne bakın. Öğelerin sırası önemlidir. Sırayla XAML türleri, yedekleme oluşturucusunun veya fabrika yöntemi aşırı yüklemesinin türleri ve tür sırası ile eşleşmelidir. |
methodName |
Bağımsız x:Arguments değişkenleri işlemesi gereken fabrika yönteminin adı. |
Bağımlılıklar
x:FactoryMethod
geçerli olduğu x:Arguments
kapsam ve davranışı değiştirebilir.
Belirtilmezse x:FactoryMethod
, x:Arguments
yedekleme oluşturucularının alternatif (varsayılan olmayan) imzalarına uygulanır.
belirtilirse x:FactoryMethod
, x:Arguments
adlandırılmış yöntemin aşırı yüklemesine uygulanır.
Açıklamalar
XAML 2006, başlatma metni aracılığıyla varsayılan olmayan başlatmayı destekleyebilir. Ancak, bir başlatma metni oluşturma tekniğinin pratik uygulaması sınırlıdır. Başlatma metni tek bir metin dizesi olarak değerlendirilir; bu nedenle, dizeden özel bilgi öğelerini ve özel sınırlayıcıları ayrıştırabilen yapı davranışı için bir tür dönüştürücü tanımlanmadığı sürece yalnızca tek bir parametre başlatma özelliği ekler. Ayrıca, nesne mantığına yönelik metin dizesi, gerçek dize dışındaki temel bilgileri işlemek için belirli bir XAML ayrıştırıcısının yerel varsayılan tür dönüştürücüsü olabilir.
x:Arguments
Yönerge işaretlemesi içeren nesne öğesinin türüne başvurmadığından, XAML kullanımı tipik anlamda özellik öğesi kullanımı değildir. Bu, öğesinin işaretlemenin alt içerik için varsayılan değerden farklı olarak yorumlanması gereken bir aralığı işaretlediği diğer yönergelere x:Code
daha benzer. Bu durumda, her nesne öğesinin XAML türü, bir kullanımın başvurmaya çalıştığı belirli oluşturucu fabrika yöntemi imzasını x:Arguments
belirlemek için XAML ayrıştırıcıları tarafından kullanılan bağımsız değişken türleri hakkında bilgi iletir.
x:Arguments
oluşturulmakta olan bir nesne öğesi için nesne öğesinin diğer özellik öğelerinin, içeriğin, iç metnin veya başlatma dizelerinin önünde olması gerekir. içindeki x:Arguments
nesne öğeleri, bu XAML türü ve onun destek oluşturucu veya fabrika yöntemi tarafından izin verilen öznitelikleri ve başlatma dizelerini içerebilir. Nesne veya bağımsız değişkenler için, oluşturulan ön ek eşlemelerine başvurarak varsayılan XAML ad alanının dışında olan özel XAML türleri veya XAML türleri belirtebilirsiniz.
XAML işlemcileri, içinde belirtilen x:Arguments
bağımsız değişkenlerin bir nesne oluşturmak için nasıl kullanılması gerektiğini belirlemek için aşağıdaki yönergeleri kullanır. Belirtilirse x:FactoryMethod
, bilgiler belirtilenle x:FactoryMethod
karşılaştırılır (değerinin x:FactoryMethod
yöntem adı olduğunu ve adlandırılmış yöntemin aşırı yüklemeleri olabileceğini unutmayın. Belirtilmezse x:FactoryMethod
, bilgiler nesnenin tüm genel oluşturucu aşırı yüklemeleri kümesiyle karşılaştırılır. XAML işleme mantığı daha sonra parametre sayısını karşılaştırır ve eşleşen arity ile aşırı yüklemeyi seçer. Birden fazla eşleşme varsa, XAML işlemcisi sağlanan nesne öğelerinin XAML türlerine göre parametrelerin türlerini karşılaştırmalıdır. Hala birden fazla eşleşme varsa, XAML işlemci davranışı tanımlanmamıştır. belirtildiyse x:FactoryMethod
ancak yöntemi çözümlenemiyorsa, XAML işlemcisi bir özel durum oluşturmalıdır.
XAML öznitelik kullanımı <x:Arguments>string</x:Arguments>
teknik olarak mümkündür. Ancak bu, metin ve tür dönüştürücülerini başlatma yoluyla aksi takdirde yapılabileceklerin ötesinde bir özellik sağlamaz ve bu söz dizimini kullanmak XAML 2009 fabrika yöntemi özelliklerinin tasarım amacı değildir.
Örnekler
Aşağıdaki örnekte parametresiz bir oluşturucu imzası gösterilmektedir ve ardından bu imzaya erişen XAML kullanımı x:Arguments
gösterilmektedir.
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>
Aşağıdaki örnekte hedef fabrika yöntemi imzası gösterilir ve ardından bu imzaya erişen XAML kullanımı x:Arguments
gösterilir.
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>
Ayrıca bkz.
.NET Desktop feedback