C# [ ] Arasına Yazılan Komutlar
-
Github'daki bazı projelere bakıyorum. [ ] karakterleri arasına yazılmış kodlara denk geldim. Örnek;
44. [return: MarshalAs(UnmanagedType.Bool)]
47. [DllImport("user32.dll")]
62. [StructLayout(LayoutKind.Sequential)]
113. [Flags]
47. satır gibi olanlar anlaşılabilir win32 api ekliyor ama diğerleri nedir. Ve bu "[ ]" belirteci tam olarak ne için kullanılır merak ediyorum. Şimdiden teşekkürler.
Kaynak;
https://github.com/djhohnstein/SharpLogger/blob/master/Program.cs
-
olayin win32 ile bir alakasi yok hocam, bu bahsettigin isaretler attribute olarak geciyor
https://www.codeproject.com/Articles/827091/Csharp-Attributes-in-minutes
Sinif/metod icin yaptiginda bazi kisitlamalar ekleyebiliyorsun. Tekrar tekrar yazmak yerine isini kolaylastiriyor. Genelde bu amacla kullaniliyor.
örnek vermem gerekirse, bir webservisim var ve classimin icinde bazi metodlar var ve ben bu metodlarda yetki kontrolü yapmak istiyorum. Eger yetkisi varsa bu metodu kullanabilmsin.
Söyle yaparim mesela
publich IList<Members> GetMembers()
{
if(_userHasRight())
{
return _db.GetMembers();
}
throw new Exception ("Yetkiniz yok");
}
ben metodun icinde bu kontrolü yapmak yerine söyle yapabilirim
[BenimAuth(yetki="Admin")]
publich IList<Members> GetMembers()
{
return _db.GetMembers();
}
[BenimAuth(yetki="Admin,Moderator")]
publich IList<Members> GetLastMember()
{
return _db.GetLastMember();
}
Gördügün gibi metodlara erisim seviesi bile verebilyiorum. Eger yetkisi Admin ise su metodlari cagirabilsin, yani yetkisine göre metodlari cagirabiliyor. Bu metod bazinda, bunu tüm class'a da uygulayabilirsin böylece her metod icin attribute tanimlamak zorunda kalmazsin.
Benzer seyi property'ler icin de yapabilirsin. Mesela isim alani var ve max 50 ve min 5 karakter girilmesini istiyorsun
[LenghtControl(MaxLength = 50, MinLength=5)]
public string Name;
gibi.. Tabi bu attributeler ayri ayri siniflar,metodlar. Bunlarin arkaplanda kodunu yazip, kendi siniflarinda kullanman lazim. Hazir yapilar degil yani.
umarim aciklayici olmustur
-
unbalanced bunu yazdı
olayin win32 ile bir alakasi yok hocam, bu bahsettigin isaretler attribute olarak geciyor
https://www.codeproject.com/Articles/827091/Csharp-Attributes-in-minutes
Sinif/metod icin yaptiginda bazi kisitlamalar ekleyebiliyorsun. Tekrar tekrar yazmak yerine isini kolaylastiriyor. Genelde bu amacla kullaniliyor.
örnek vermem gerekirse, bir webservisim var ve classimin icinde bazi metodlar var ve ben bu metodlarda yetki kontrolü yapmak istiyorum. Eger yetkisi varsa bu metodu kullanabilmsin.
Söyle yaparim mesela
publich IList GetMembers()
{
if(_userHasRight())
{
return _db.GetMembers();
}
throw new Exception ("Yetkiniz yok");
}
ben metodun icinde bu kontrolü yapmak yerine söyle yapabilirim
[BenimAuth(yetki="Admin")]
publich IList GetMembers()
{
return _db.GetMembers();
}
[BenimAuth(yetki="Admin,Moderator")]
publich IList GetLastMember()
{
return _db.GetLastMember();
}
Gördügün gibi metodlara erisim seviesi bile verebilyiorum. Eger yetkisi Admin ise su metodlari cagirabilsin, yani yetkisine göre metodlari cagirabiliyor. Bu metod bazinda, bunu tüm class'a da uygulayabilirsin böylece her metod icin attribute tanimlamak zorunda kalmazsin.
Benzer seyi property'ler icin de yapabilirsin. Mesela isim alani var ve max 50 ve min 5 karakter girilmesini istiyorsun
[LenghtControl(MaxLength = 50, MinLength=5)]
public string Name;
gibi.. Tabi bu attributeler ayri ayri siniflar,metodlar. Bunlarin arkaplanda kodunu yazip, kendi siniflarinda kullanman lazim. Hazir yapilar degil yani.
umarim aciklayici olmustur
Çok teşekkürler hocam. Açıklama için ayrıca teşekkürler. Tam oturması için pratik yapmak lazım biraz.