Attributes (Öznitelikler): Kodlara Meta Veri Eklemek

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16

C# Attributes (Öznitelikler): Kodunuza Meta Veri Ekleyin​


Attribute, sınıflar, metotlar, özellikler veya değişkenler hakkında ek bilgi sağlayan bir yapıdır. Kodun işleyişine doğrudan karışmazlar; ancak derleyiciye veya diğer araçlara (serileştirme, veritabanı eşleme gibi) rehberlik ederler.



1. Hazır (Built-in) Öznitelikler​


.NET içerisinde sıkça kullandığımız bazı hazır öznitelikler vardır:


  • [][Obsolete]: Bir metodun artık kullanılmaması gerektiğini belirtir. Derleyici bu metot kullanıldığında uyarı verir.
    [][Serializable]: Bir sınıfın verilerinin bir dosyaya veya ağa aktarılabileceğini işaretler.
  • [Required]: (ASP.NET gibi yapılarda) Bir alanın boş geçilemeyeceğini belirtir.

C#:
public class Sistem
{
[Obsolete("Bu metot eski sürümde kaldı, lütfen 'YeniGiris' metodunu kullanın.")]
public void EskiGiris()
{
// Eski kodlar...
}
}



2. Custom Attributes: Kendi Özniteliğinizi Oluşturmak​


Kendi özniteliklerinizi oluşturmak için System.Attribute sınıfından miras alan bir sınıf yazmanız yeterlidir.

C#:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class BilgiAttribute : Attribute
{
public string Yazar { get; }
public string Versiyon { get; }

public BilgiAttribute(string yazar, string versiyon)
{
    Yazar = yazar;
    Versiyon = versiyon;
}

}

// Kullanımı:
[Bilgi("Gökhan", "1.0")]
public class OdemeServisi { }



3. Öznitelikleri Okumak: Reflection (Yansıma)​


Bir koda eklediğiniz özniteliği okumak için Reflection kullanırız. Bu, uygulamanın kendi kod yapısını incelemesi anlamına gelir.

C#:
var tip = typeof(OdemeServisi);
var nitelikler = tip.GetCustomAttributes(typeof(BilgiAttribute), false);

foreach (BilgiAttribute nitelik in nitelikler)
{
Console.WriteLine($"Bu sınıf {nitelik.Yazar} tarafından yazıldı. Versiyon: {nitelik.Versiyon}");
}



4. Kullanım Alanları: Neden İhtiyaç Duyarız?​


Öznitelikler modern C# kütüphanelerinin temelidir:

Kullanım AlanıÖrnek
Veritabanı (EF Core)[Key], [Table("Uyeler")] ile tablo eşleşmelerini sağlar.
Web API[HttpGet], [Authorize] ile erişim izinlerini belirler.
Test Frameworkleri[Test], [Fact] ile hangi metotların test olduğunu işaretler.



Sonuç​


Öznitelikler, kodunuzu daha deklaratif (ne yapılacağını söyleyen) hale getirir. "Eğer bu metot [Logla] etiketi taşıyorsa, çalışmadan önce günlük tut" gibi esnek mantıklar kurmanıza olanak tanır. Kodunuzun okunabilirliğini artırırken, diğer kütüphanelerle olan iletişimini de standartlaştırır.
 
Geri
Üst