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.