19 Ağu 2011 Reflection ile Dinamik Tip Oluşturmak Kategori: Yazılım Etiketler: C#C# 4.0ASP.NET 4.0ASP.NET 0 Yorum Projelerimden birinde Developer Express kontrollerinden ASPxGridview'i kullanırken RowDataBound eventinin olmadığını farkettim. Biraz araştırdıktan sonra bu evente karşılık olarak HtmlRowPrepared eventini buldum. Bu event RowDataBound ile aynı işi yapsa da çok yetersiz. Örnek olarak e.Row.DataItem property'si ASPxGridView kontrolün de yer almıyor. Benzer işi yapan GetValue metodu var fakat her defasında da datayı okumak için GetValue metodunu çağırmak pek hoşuma gitmedi açıkcası. Bu sorunu çözmek için bir extension metot yazdım ve her defasında GetValue metodunu çağırmak yerine ilgili nesneyi döndürüyor. Metot generic olduğu için hangi tipte nesne set ederseniz edin size o tipte bir nesne döndürüyor. Her ne kadar Asp.Net kontrolünün yerini tutan bir kontrol olmasa da bu metot sayesinde biraz daha kullanışlı hale gelmiş oldu :) public static T RowData<T>(this ASPxGridViewTableRowEventArgs row) whereT : class, new() { Type originalObject = (newT()).GetType(); // DataSource'a set edilen collection nesnenin tipi T newObject = Activator.CreateInstance<T>(); // Geri döndüreceğimiz tipi oluşturuyoruz foreach (var property in originalObject.GetProperties()) // Property'lere değerlerini set etmek için tüm propertyler arasında gezinelim { if (property.CanWrite) // Property set blogunu içeriyorsa { property.SetValue(newObject, row.GetValue(property.Name), null); } } return(T)newObject; // Oluşturulan tip doldurulduktan sonra geri döndürülür...} İşte bu kadar :) Yorum (0) Bu yazıya henüz yorum yapılmamış... Yorum Yaz * Ad Soyad: * Email: * Message: