Named ve positional parametreler
Attribute'lerde named ve positional parametreleri öğrenirsin.
Positional ve named parametreler
Attribute kullanımında iki tür parametre vardır. Positional parametreler oluşturucuya sırayla geçer ve zorunludur. Named parametreler ise yazılabilir özelliklere atanır ve isteğe bağlıdır. Sözdizimi: [Attr("pos", Named = 5)].
Positional parametreler attribute oluşturucusunun parametre listesine karşılık gelir. Named parametreler Ad = değer biçiminde yazılır ve oluşturucu çağrısından sonra, virgülle ayrılır. Named'ler sınıfın public set edilebilir özelliklerine atanır.
Positional parametreler
Positional parametreler attribute oluşturucusunun argümanlarıdır. Zorunludur ve sırası önemlidir. Named parametrelerden önce yazılır. Örnek: public InfoAttribute(string name) oluşturucusu için [Info("Veri")] kullanımı positional'dır.
Birden çok positional parametre virgülle ayrılır. Hem positional hem named kullanırsan, önce tüm positional'lar, sonra named'ler yazılır: [Info("Veri", Priority = 3)]. Sıra named'ler için önemli değildir.
Uygulama Positional ve named birlikte kullan
Aşağıdaki Sample sınıfına [Info("Veri", Priority = 3)] uygula. Main içinde Attribute.GetCustomAttribute(typeof(Sample), typeof(InfoAttribute)) as InfoAttribute ile oku ve Console.WriteLine(attr.Priority) ile Priority değerini yazdır.
Örnek çözümü göster
var attr = Attribute.GetCustomAttribute(typeof(Sample), typeof(InfoAttribute)) as InfoAttribute; Console.WriteLine(attr.Priority);
Örnek çözüm:
using System;
[AttributeUsage(AttributeTargets.Class)]
public class InfoAttribute : Attribute
{
public string Name { get; set; }
public int Priority { get; set; }
public InfoAttribute(string name) { Name = name; }
}
[Info("Veri", Priority = 3)]
class Sample { }
class Program
{
static void Main()
{
var attr = Attribute.GetCustomAttribute(typeof(Sample), typeof(InfoAttribute)) as InfoAttribute;
Console.WriteLine(attr.Priority);
}
}
Kendini test et
-
Named parametre nereye gider?
- Yazılabilir özelliğe
- Oluşturucuya
- Statik alana
- Yalnızca okunur özelliğe
Cevabı göster
Yazılabilir özelliğe — Doğru. Named parametre yazılabilir bir özelliğe atanır.
-
Named parametreyi tamamla
[My("test", ____ = 5)]Cevabı göster
[My("test", Count = 5)] -
Parametre türünü hedefine eşle
- Positional
- Oluşturucu parametresi
- Named
- Özellik ataması
- Optional
- Adlandırılmış ve isteğe bağlı
- Mandatory
- Positional zorunlu