KMRT BSRN

"Hiç kimsenin ilgisine ihtiyaç duymadığın gün olgunlaşırsın. Hiç kimseden beklentiye girmediğin gün yara almazsın. Ve hiç kimseye bağımlı kalmazsan kazanırsın." OSHO


Yorum bırakın

ASP.NET Code-Behind Property Kullanımı

Bu video’da ASP.NET ile arkaplan kodunda(Code Behind) property kullanımı nasıl olur bundan bahsediyor olacağım. Aslında geçmiş yıllarda çektiğim bir videodur. Sizlerle tekrar paylaşıyorum.

 

Reklamlar


Yorum bırakın

Metot, Özellik, Değişken Kavramı

Bu video ile metot kullanımı, özellik kullanımı, değişken kullanımı hakkında bilgi edinebilirsiniz. Sahip olduğunuz bilgiyi daha da geliştirebilirsiniz. Önceki yıllarda paylaştığım video sizlerle tekrar paylaşıyorum. İyi seyirler diliyorum..


Yorum bırakın

Properties For Inclusion in the Class Using Dictionary – Sınıfa özellikleri Sözlük Kullanarak Dahil Etme

Merhaba;

Bugün sizlere kullandığımız sınıflarda eklediğimiz özelliklerin yetersiz kalması durumunda, bize çıkış yolu sağlayacak bir yapının nasıl kurulabileceğinden bahsedeceğim. Örneğin; kullandığımız .NET kütüphanesi kontrollerinde de buna benzer bir yapı görebiliriz. Kontrollerdeki bu özellik “Tag” özelliğidir. Bu özelliğin tipi “object” dir. Yani içeriğine istediğimiz bir nesneyi yerleştirebiliriz. Bu da bize kod yazarken kontrolün yapısında tutmak istediğimiz bir nesne olduğunda çok kolaylık sağlar. Bizimde yapacağımız bu yapının sınıflarımıza uyarlanmasıdır.

Sınıflarımıza ekleyeceğimiz bir “private özellik” ile bunu kolayca sağlayabiliriz. Bu özelliğin tipi “Dictionary<string,object>” olmalıdır.

private Dictionary<string, object> OtherProperties { get; set; }

Bu yapı içinde istediğimiz nesneleri “Key-Value” ilişkisi ile tutabiliriz.

 

Varolan .NET Kontrol Yapılarının Yeni Tekniğe Genişletilmesi.

Şunuda düşünebilirsiniz; sadece .NET kontrol sınıflarında olduğu gibi bir “object” özellikte tanımlayabilirdik. Fakat bu teknik ile şu sorunlar oluşabilir. Yazılım geliştircilerden biri bu özelliği kullandığında diğer yazılımcı bunu farkedemeyebilir ve kodun başka bir yerinde bu özelliğe bir değer atayarak bunu değiştirebilir. Bu durumda, bu özelliği ilk kullanan yazılımcının kodu doğru çalışmayabilir. Tabii ki ilgili kontrolleri yapmıyorsa. Bu durumda yazılımı geliştiren arkadaşların bu konuda bir fikir birliği oluşturarak bu özelliğe sadece tanımladığımız gibi bir nesne ataması yapılabileceğinin ortak kanısına varılması gerekir. Bunuda ayrı bir sınıf ile kullanmaları gerekir. Bunu göstermek gerekirse;

Özellik Private Olabilir
private Object OtherProperties { get; set; }

ya da

Özellik Public Olabilir
public object OtherProperties { get; set; }

Fakat bu sınıfın public olması kurulan yapının farkında olmayan yazılımı geliştiren başka bir yazılımcının dışarıdan erişilerek üzerine bir veri yazmasına ve çalışan kodun yapısının bozulmasına sebep olabilir. Bu mantıksal hatanın farkedilmesi bile kolay olmayabilir. Biz yapımıza devam edersek bu “object” tipindeki özelliğin kullanımı için bir sınıf geliştirilmesi ve bu sınıf üzerinden bu özelliğe erişme(veri okuma ve yazma) sağlanmalıdır.

 

Property Manager V1.0
  1. public class PropertyManager
  2. {
  3.  
  4.     public bool TryGetMember(object otherProperties, string propname, out object result)
  5.     {
  6.         // "object" ?zellik icindeki s?zl?k yapisina erisilir.
  7.         if (otherProperties != null && otherProperties.GetType() == typeof(Dictionary<string, object>))
  8.         {
  9.             Dictionary<string, object> dictionary = otherProperties as Dictionary<string, object>;
  10.  
  11.             // Sozluk yapisi icindeki ilgili key degerinin degeri elde edilir.
  12.             if (dictionary.ContainsKey(propname))
  13.             {
  14.                 result = dictionary[propname];
  15.             }
  16.             else
  17.             {
  18.                 result = null;
  19.             }
  20.  
  21.             return true;
  22.         }
  23.         else
  24.         {
  25.             result = null;
  26.             return false;
  27.         }
  28.     }
  29.  
  30.     public bool TrySetMember(object otherProperties, string propname, object value)
  31.     {
  32.         // "object" ?zellik icindeki s?zl?k yapisina erisilir.
  33.         if (otherProperties != null && otherProperties.GetType() == typeof(Dictionary<string, object>))
  34.         {
  35.             Dictionary<string, object> dictionary = otherProperties as Dictionary<string, object>;
  36.  
  37.             // Sozluk yapisi icindeki ilgili key degerinin degeri islenir.
  38.             if (dictionary.ContainsKey(propname))
  39.             {
  40.                 dictionary[propname] = value;
  41.             }
  42.             else
  43.             {
  44.                 dictionary.Add(propname, value);
  45.             }
  46.  
  47.             return true;
  48.         }
  49.         else
  50.         {
  51.             return false;
  52.         }
  53.     }
  54.  
  55. }

Kullanımı ise şu şekilde olacaktır..

Kullanim Sekli V1.0
  1. public class MyClass
  2. {
  3.  
  4.     public string Name { get; set; }
  5.     public string Surname { get; set; }
  6.  
  7.     // Bu ozellik sonradan ihtiyacimiz olan degerleri tutacaktir.
  8.     public object OtherProperties { get; set; }
  9.  
  10.     public MyClass()
  11.     {
  12.         this.OtherProperties = new Dictionary<string, object>();
  13.     }
  14.  
  15. }
  16.  
  17. public class Test
  18. {
  19.  
  20.     // Yap?c? metot.
  21.     public Test()
  22.     {
  23.  
  24.         MyClass myClass = new MyClass();
  25.         myClass.Name = "My Name";
  26.         myClass.Surname = "My Surname";
  27.         
  28.  
  29.  
  30.         // Burada yeni ozelliklere ihtiyac duyduk diyelim.
  31.         // Verilerimizin su sekilde tutulmasini saglayacagiz.
  32.         PropertyManager propManager = new PropertyManager();
  33.         propManager.TrySetMember(myClass.OtherProperties, "Phone", "1234567890");
  34.         propManager.TrySetMember(myClass.OtherProperties, "EMail", "abcd@defg.com");
  35.  
  36.  
  37.  
  38.         // Okuma islemini su sekilde saglayacagiz.
  39.         object Phone = string.Empty;
  40.         object EMail = string.Empty;
  41.  
  42.         propManager.TryGetMember(myClass.OtherProperties, "Phone", out Phone);
  43.         propManager.TryGetMember(myClass.OtherProperties, "EMail", out EMail);
  44.  
  45.     }
  46.  
  47. }

 

Peki “PropertyManager” ‘ı daha da geliştiremez miyiz? Tabii ki geliştirebiliriz ve daha kullanışlı hale getirebiliriz.

Property Manager V2.0
  1. public class PropertyManager
  2. {
  3.     // Genel kullanim amacli.
  4.     public bool TryGetMember(object otherProperties, string propname, out object result)
  5.     {
  6.         // "object" ?zellik icindeki s?zl?k yapisina erisilir.
  7.         if (otherProperties != null && otherProperties.GetType() == typeof(Dictionary<string, object>))
  8.         {
  9.             Dictionary<string, object> dictionary = otherProperties as Dictionary<string, object>;
  10.  
  11.             // Sozluk yapisi icindeki ilgili key degerinin degeri elde edilir.
  12.             if (dictionary.ContainsKey(propname))
  13.             {
  14.                 result = dictionary[propname];
  15.             }
  16.             else
  17.             {
  18.                 result = null;
  19.             }
  20.  
  21.             return true;
  22.         }
  23.         else
  24.         {
  25.             result = null;
  26.             return false;
  27.         }
  28.     }
  29.  
  30.     // Genel kullanim amacli.
  31.     public bool TrySetMember(object otherProperties, string propname, object value)
  32.     {
  33.         // "object" ?zellik icindeki s?zl?k yapisina erisilir.
  34.         if (otherProperties != null && otherProperties.GetType() == typeof(Dictionary<string, object>))
  35.         {
  36.             Dictionary<string, object> dictionary = otherProperties as Dictionary<string, object>;
  37.  
  38.             // Sozluk yapisi icindeki ilgili key degerinin degeri islenir.
  39.             if (dictionary.ContainsKey(propname))
  40.             {
  41.                 dictionary[propname] = value;
  42.             }
  43.             else
  44.             {
  45.                 dictionary.Add(propname, value);
  46.             }
  47.  
  48.             return true;
  49.         }
  50.         else
  51.         {
  52.             return false;
  53.         }
  54.     }
  55.  
  56.  
  57.     // Direkt yazisal ifadenin elde edilmesi.
  58.     public string GetString(object otherProperties, string propname)
  59.     {
  60.         object result = string.Empty;
  61.  
  62.         if (this.TryGetMember(otherProperties, propname, out result) && result != null)
  63.             return result.ToString();
  64.         else
  65.             return string.Empty;
  66.     }
  67.  
  68.     // Direkt sayisal ifadenin elde edilmesi.
  69.     public int GetInteger(object otherProperties, string propname)
  70.     {
  71.         object result = 0;
  72.  
  73.         if (this.TryGetMember(otherProperties, propname, out result) && result != null)
  74.             return (int)result;
  75.         else
  76.             return 0;
  77.     }
  78.  
  79. }

 

Bu değişiklik kullanım şeklimizi nasıl değiştirdi.

Kullanim Sekli V2.0
  1. public class Test
  2. {
  3.  
  4.     // Yap?c? metot.
  5.     public Test()
  6.     {
  7.  
  8.         MyClass myClass = new MyClass();
  9.         myClass.Name = "My Name";
  10.         myClass.Surname = "My Surname";
  11.  
  12.  
  13.  
  14.         // Burada yeni ozelliklere ihtiyac duyduk diyelim.
  15.         // Verilerimizin su sekilde tutulmasini saglayacagiz.
  16.         PropertyManager propManager = new PropertyManager();
  17.         propManager.TrySetMember(myClass.OtherProperties, "Phone", "1234567890");
  18.         propManager.TrySetMember(myClass.OtherProperties, "EMail", "abcd@defg.com");
  19.  
  20.  
  21.  
  22.         // Okuma islemini su sekilde saglayacagiz.
  23.         string Phone = string.Empty;
  24.         string EMail = string.Empty;
  25.  
  26.         Phone = propManager.GetString(myClass.OtherProperties, "Phone");
  27.         EMail = propManager.GetString(myClass.OtherProperties, "EMail");
  28.  
  29.     }
  30.  
  31. }

 

Böylece bu tekniği kullarak varolan özelliklerden daha fazlasını yapı içinde tutabilirsiniz. Bu şekilde yazılımcıların birbirinin verilerini ezmesi durumu engellenebilir. Tabii yapının biraz daha geliştirilmesi gerekmektedir.

 

Yeni Oluşturacağımız Yapılarda Bu Tekniğin Daha Kolay Uygulanması

Sınıflarımıza ekleyeceğimiz bir “private özellik” ile bunu kolayca sağlayabiliriz. Bu özelliğin tipi “Dictionary<string,object>” olmalıdır.

private Dictionary<string, object> OtherProperties { get; set; }

Bu yapı içinde istediğimiz nesneleri “Key-Value” ilişkisi ile tutabiliriz. Bu özelliği oluşturduğumuz yapılara eklemeliyiz.

Private Other Properties V1.0
  1. public class MyClass
  2. {
  3.     // Diger ozellikleri barindiracak olan yapi.
  4.     private Dictionary<string, object> OtherProperties { get; set; }
  5.  
  6.     public MyClass()
  7.     {
  8.         this.OtherProperties = new Dictionary<string, object>();
  9.     }
  10.  
  11.     // Ozellik s?zlugunden okuma yapar.
  12.     public bool TryGetMember(string propname, out object result)
  13.     {
  14.         if (OtherProperties.ContainsKey(propname))
  15.         {
  16.             result = OtherProperties[propname];
  17.         }
  18.         else
  19.         {
  20.             result = null;
  21.         }
  22.  
  23.         return true;
  24.     }
  25.     // Ozellik s?zlugune yazma yapar.
  26.     public bool TrySetMember(string propname, object value)
  27.     {
  28.         if (OtherProperties.ContainsKey(propname))
  29.         {
  30.             OtherProperties[propname] = value;
  31.         }
  32.         else
  33.         {
  34.             OtherProperties.Add(propname, value);
  35.         }
  36.  
  37.         return true;
  38.     }
  39.  
  40. }
  41. public class PropNames
  42. {
  43.     public static string Name = "Name";
  44.     public static string Surname = "Surname";
  45.     public static string Phone = "Phone";
  46. }

Kullanım şekli;

Kullanım Şekli V1.0
  1. static void Main(string[] args)
  2. {
  3.     MyClass myClass = new MyClass();
  4.  
  5.     myClass.TrySetMember(PropNames.Name, "Murat");
  6.     myClass.TrySetMember(PropNames.Surname, "Ba?eren");
  7.     myClass.TrySetMember(PropNames.Phone, "123456");
  8.  
  9.     object name = string.Empty;
  10.     object surname = string.Empty;
  11.     object phone = string.Empty;
  12.  
  13.     myClass.TryGetMember(PropNames.Name, out name);
  14.     myClass.TryGetMember(PropNames.Surname, out surname);
  15.     myClass.TryGetMember(PropNames.Phone, out phone);
  16.  
  17.     Console.WriteLine(name.ToString() + "\n" + surname.ToString() + "\n" + phone.ToString());
  18.  
  19.     Console.ReadKey();
  20.  
  21. }

Fakat yukarıdaki gibi yapıyı daha da geliştirebiliriz.

Private Other Properties V2.0
  1. public class MyClass
  2. {
  3.     // Diger ozellikleri barindiracak olan yapi.
  4.     private Dictionary<string, object> OtherProperties { get; set; }
  5.  
  6.  
  7.     public MyClass()
  8.     {
  9.         this.OtherProperties = new Dictionary<string, object>();
  10.     }
  11.  
  12.  
  13.     // Ozellik sozlugunden okuma yapar.
  14.     public bool TryGetMember(string propname, out object result)
  15.     {
  16.         if (OtherProperties.ContainsKey(propname))
  17.         {
  18.             result = OtherProperties[propname];
  19.         }
  20.         else
  21.         {
  22.             result = null;
  23.         }
  24.  
  25.         return true;
  26.     }
  27.     // Ozellik sozlugune yazma yapar.
  28.     public bool TrySetMember(string propname, object value)
  29.     {
  30.         if (OtherProperties.ContainsKey(propname))
  31.         {
  32.             OtherProperties[propname] = value;
  33.         }
  34.         else
  35.         {
  36.             OtherProperties.Add(propname, value);
  37.         }
  38.  
  39.         return true;
  40.     }
  41.  
  42.  
  43.  
  44.     // Yazisal ifadelerin degerini verir.
  45.     public string GetString(string propname)
  46.     {
  47.         object result = string.Empty;
  48.  
  49.         if (this.TryGetMember(propname, out result) && result != null)
  50.             return result.ToString();
  51.         else
  52.             return string.Empty;
  53.     }
  54.  
  55.     // Sayisal ifadelerin degerini verir.
  56.     public int GetInteger(string propname)
  57.     {
  58.         object result = 0;
  59.  
  60.         if (this.TryGetMember(propname, out result) && result != null)
  61.             return (int)result;
  62.         else
  63.             return 0;
  64.     }
  65.  
  66. }

Kullanım Şekli;

Kullanım Şekli V2.0
  1. static void Main(string[] args)
  2. {
  3.     MyClass myClass = new MyClass();
  4.  
  5.     myClass.TrySetMember(PropNames.Name, "Murat");
  6.     myClass.TrySetMember(PropNames.Surname, "Ba?eren");
  7.     myClass.TrySetMember(PropNames.Phone, "123456");
  8.  
  9.     string name = string.Empty;
  10.     string surname = string.Empty;
  11.     string phone = string.Empty;
  12.  
  13.     name = myClass.GetString(PropNames.Name);
  14.     surname = myClass.GetString(PropNames.Surname);
  15.     phone = myClass.GetString(PropNames.Phone);
  16.  
  17.     Console.WriteLine(name + "\n" + surname + "\n" + phone);
  18.  
  19.     Console.ReadKey();
  20.  
  21. }

Bu şekilde yapınızda gereksinim duyduğunuzda istediğiniz veriyi barındırabilir hale gelirsiniz.

İyi Çalışmalar..


Yorum bırakın

ASP.NET – Code-Behind Property Kullanımı ile İlgili Teknik ve İpuçları

ASP.NET web sayfalarının arkaplan kodunda çoğu zaman Property ‘ler kullanırız. Fakat bu yapı, windows forms ile uygulama geliştirenler için anlaşılması biraz zor gelebilir. Çünkü farklı bir çalışma mekanizması söz konusudur. Bu sebeple bu durumda neler yapabileceğimizi ve property’leri nasıl kullanacağımızı anlatan bu video kaydını sizinle paylaşmak istiyorum. Ses biraz uğultulu çıkmış ama anlaşılmayacak kadar değil. 🙂 İlginizi çekeceğini düşündüğüm bazı teknikleride video da paylaştım.

 

http://content.screencast.com/users/MaviSeffaf/folders/Default/media/07c67139-b560-49de-bb5b-3a46bf7511e9/mp4h264player.swf

Videoyu idirmek için tıklayınız..


Yorum bırakın

Variable, Method, Property Nedir?

Değişkenlerin tanımlanması, özelliklerin tanımlanması ve fonksiyonlar. Bunların modifier ile erişilebilirliklerinin belirlenmesi ve incelenmesi ile ilgili video dersi.


Yorum bırakın

VB – Property Binding ile Uygulama Ayarlarını Kaydetme

Yazdığımız uygulamalarda olmazsa olmaz şeylerden biride, kullanıcının yaptığı ayarların saklanması ve programın bu ayarlara göre başlamasıdır. Hatta kullanıcı istediği zaman bu ayarları “Default”(Varsayılan – ilk kurulum anına) çevirebilmelidir. İşte bu işlevi kolaylıkla yapabilmemiz için Microsoft amca bize Property Binding ile güzel bir kolaylık sağlamış. Kullanımı çok kolay ve eğlenceli J

Her kontrolün “Properties” penceresinde bulunan “Application Settings” altındaki “Property Bindings” kısmından o kontrol’ ün istediğiniz özelliğine bir “Default Value”(Başlangıç Değeri) atayabilirsiniz..

Bunun avantajı programda yapılan kullanıcı ayarlarının saklanabilmesi ve başlangıç ayarlarına dönüşümün kolaylaşmasıdır.. Ayrıcada derleme yapmadan kontrol başlangıç değerinin (“Default Value”) değiştirilebilir olmasıdır..

Olayı biraz resimlendirirsek;

Şekildeki gibi bir form oluşturdum..

Makaleyi yükle