x:Arguments Yönergesi
XAML içindeki parametresiz bir Oluşturucu nesne öğesi bildirimi veya bir Factory yöntemi nesne bildirimi için paket oluşturma bağımsız değişkenleri.
XAML öğesi kullanımı (parametresiz Oluşturucu)
<object ...>
<x:Arguments>
oneOrMoreObjectElements
</x:Arguments>
</object>
XAML öğesi kullanımı (Factory yöntemi)
<object x:FactoryMethod="methodName"...>
<x:Arguments>
oneOrMoreObjectElements
</x:Arguments>
</object>
XAML Değerleri
| Değer | Açıklama |
|---|---|
oneOrMoreObjectElements |
, Parametresiz oluşturucuya 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ırasıyla XAML türleri, yedekleme oluşturucusunun veya fabrika yöntemi aşırı yüklemesinin türleri ve tür sırasıyla eşleşmelidir. |
methodName |
Herhangi bir bağımsız değişkeni işlemesi gereken fabrika yönteminin adı x:Arguments . |
Bağımlılıklar
x:FactoryMethod , geçerli olduğu yerde kapsamı ve davranışı değiştirebilir x:Arguments .
Hayır x:FactoryMethod belirtilirse, x:Arguments yedekleme oluşturucuların alternatif (varsayılan olmayan) imzaları için geçerlidir.
x:FactoryMethodBelirtilmişse, x:Arguments adlandırılmış yöntemin aşırı yüklemesi için geçerlidir.
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, özel bilgi öğelerini ve dizeden özel sınırlayıcıları ayrıştırabilen oluşturma davranışı için bir tür dönüştürücüsü tanımlanmadığı müddetçe yalnızca tek bir parametre başlatması için yetenek ekler. Ayrıca, nesne mantığından metin dizesi büyük olasılıkla belirli bir XAML ayrıştırıcısının, doğru bir dize dışındaki temelleri işlemek için yerel varsayılan tür dönüştürücütür.
x:ArgumentsXAML kullanımı tipik anlamda Özellik öğesi kullanımı değildir, çünkü yönerge biçimlendirmesi kapsayan nesne öğesinin türüne başvurmuyor. Bu, x:Code öğenin, biçimlendirmenin alt içerik için varsayılan değer olarak yorumlanacağı bir aralığı nerede işaretlediği gibi diğer yönergelere daha fazla oturum açabilirsiniz. Bu durumda, her bir nesne öğesinin XAML türü, bir kullanımın başvuruya hangi belirli Oluşturucu fabrikası için imza olduğunu belirleyen XAML Çözümleyicileri tarafından kullanılan bağımsız değişken türleriyle ilgili bilgileri iletişim kurar x:Arguments .
x:Arguments oluşturulmakta olan bir nesne öğesinin, nesne öğesinin diğer özellik öğelerinden, içerik, iç metin veya başlatma dizelerinin önünde olması gerekir. İçindeki nesne öğeleri x:Arguments , bu xaml türü ve onun yedekleme Oluşturucusu ya da 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 önek eşlemelerine başvurarak varsayılan XAML ad alanı dışındaki özel XAML türlerini veya XAML türlerini belirtebilirsiniz.
XAML işlemcileri, ' de belirtilen bağımsız değişkenlerin x:Arguments bir nesne oluşturmak için nasıl kullanılması gerektiğini belirlemede aşağıdaki yönergeleri kullanır. x:FactoryMethodBelirtilmişse, bilgiler belirtilen ile karşılaştırılır x:FactoryMethod (değerinin x:FactoryMethod yöntemin adı olduğunu ve adlandırılmış yöntemin aşırı yüklemeleri olabileceğini unutmayın. x:FactoryMethodBelirtilmemişse, bilgiler nesnenin tüm genel Oluşturucu aşırı yüklerini kümesiyle karşılaştırılır. XAML işleme mantığı, parametre sayısını karşılaştırır ve eşleşen parametre sayısına sahip aşırı yüklemeyi seçer. Birden fazla eşleşme varsa, XAML işlemcisi parametrelerin türlerini, belirtilen nesne öğelerinin XAML türlerine göre karşılaştırmalıdır. Hala birden fazla eşleşme varsa XAML işlemci davranışı tanımsızdır. Bir x:FactoryMethod , belirtilmişse ancak yöntem çözümlenemiyorsa, BIR XAML işlemcisi bir özel durum oluşturur.
XAML öznitelik kullanımı <x:Arguments>string</x:Arguments> Teknik açıdan mümkündür. Bununla birlikte, bu, başlatma metni ve tür dönüştürücüler aracılığıyla ne yapabileceğinize ilişkin hiçbir özellik sağlamaz ve bu sözdiziminin kullanılması XAML 2009 fabrika yöntemi özelliklerinin tasarım amacı değildir.
Örnekler
Aşağıdaki örnek, parametresiz bir Oluşturucu imzasını, ardından bu imzaya erişen XAML kullanımını gösterir x:Arguments .
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 örnek, bir hedef fabrika yöntemi imzasını, ardından bu imzaya erişen XAML kullanımını gösterir x:Arguments .
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>