Binary Serialization ve Versiyon Problemi

   C# ile hafızadaki bir nesneyi saklamak iserseniz (örneğin, dosya sisteminde ya da veritabanındaki bir tabloda) bu işlem için kullanabileceğiniz iki temel yaklaşım bulunmakta ve bu iki yöntemin de kendilerine göre artıları ve eksileri söz konusu; Xml Serialization      : Birlikte işlerlik sizin için önemli ise şüphesiz ki ilk tercihiniz (hatta tek tercihiniz) xml serileştirme olacaktır.…

Öznitelikler ve Reflection’la C# Dilini İhtiyaçlarınız Doğrultusunda Genişletin -2

   Bir önceki makalemde sizlere öznitelik (attribute) ve yansıma (reflection) konularında bahsetmiştim. Her zaman dediğim gibi, bu ikili bir arada gerçekten çok önemli bir güç haline gelmekte. Bu ikilinin kullanımına dair o kadar fazla şey söylenebilir ki, tek makale buna hiç bir zaman yetmeyecektir. Bu sebeple ikinci bir makale ile konuyu biraz daha derinleştirmek istedim.…

Öznitelik’ler ve Reflection’la C# Dilini İhtiyaçlarınız Doğrultusunda Genişletin

   C# anlatırken ne zaman konu özniteliklere (attributes) gelse, bu konuyu ilk dinleyenler için konu hep havada kalır. “Kodunuzun içerisine ekleyebileceğim meta veriler mi!?”, “Bu meta veriler ne işime yarayacak ki?” Bu sorulara verdiğim yanıt ise biraz daha sabırlı olmaları ve hemen ardından anlattığım reflection konusunu dinlemeleri oluyor.    Öznitelikler ve Reflection bir araya geldiğinde…

Dinamik Oluşturulan Kodlara Debug Bilgisi Eklemek

Daha önce yazdığım makalemde sizlere çalışma-zamanı dinamik kod oluşturmayı anlatmıştım. Yazım ardından aldığım bazı maillerde bu yöntemi kullanmaya başladıktan sonra ikinci bir ihtiyacın oluştuğunu gördüm; oluşturulan dinamik kodun Debug edilebilmesi. Okuyacağınız yazımda bu konuyu ele alarak dinamik kod oluşturma sürecinde yapacağınız ek kodlama ile nasıl debug edilebilir bir kod oluşturabileceğinizi göstermeye çalışacağım. Öncelikle bir önceki…

Çalışma-Zamanı Dinamik Kod Oluşturma

Yazılım geliştiriciler olarak her zaman kullanıcıların ihtiyaçlarını karşılamak için derleme-zamanı yazmış olduğumuz kodları kullanırız; ama zaman zaman keşke kendi kendini yazan, çalıştıran programlarımız olsun dediğiniz olmuştur. İşte tam bu düşüncede olan tüm yazılım geliştiricilerin en seveceği C# namespace’i sanırım System.Reflection.Emit olacaktır. Bu makalemde sizlere bu namespace altında yer alan sınıflar yardımıyla çalışma-zamanında nasıl dinamik olarak…

dynamic : statik ve dinamik diller arası köprü

Bir önceki makaleme gelen güzel yorumlar sonrası dynamic hakkında ikinci bir makale ile konuyu detaylandırmanın faydalı olacağını düşündüm. C# 4.0’la birlikte gelen özellikleri inceleyenlerin dynamic hakkında düştüğü ortak bir yanılğı, dynamic’in CLR seviyesinde desteklendiğidir. Her ne kadar dynamic hayatımızda önemli bir değişikliğe neden olsa da, bu yanılgıya düşenler için basit kullanımlarda beklediklerinin aksine uygulamalarında performans…

object ve dynamic

Son zamanlar sıkça “dynamic” ve eski dostumuz “object” arasında ne fark olduğu sorusuyla karşılaşıyorum. İkisi arasında bir fark var mı? Bu sorunun yanıtı hem evet hem hayır aslında. Eğer, arka planda yapılan işleri bilmiyorsanız, evet, rahatlıkla object kullandığınız her yerde kullanabilirsiniz ve derleme-zamannda herhangi bir hata ile karşılaşmazsınız. Sanırım yazımın devamını okuyarak kararı sizin vermeniz…

Managed WMI Sınıfları Oluşturma

     C# ile WMI kodu yazıyorsanız ManagementScope, ManagementObjectSearcher, ManagementObjectCollection ve tabiki ManagementObject sınıflarına sık sık başvurmuşsunuzdur; ama bu sınıflarla çalışmak her zaman kolay değildir, özellikle de fonksiyonlarını kullanıyorsanız. Aşağıdaki koda göz atın :        Şimdi size iyi bir haberim var; .Net framework araçları arasında bulunan “Management Strongly Typed Class Generator” (Mgmtclassgen.exe) işlerinizi oldukça kolaylaştıracaktır. “<Program…

Web Servislerinde WMI Kullanımı

   Bir süredir aklımda, No-IP ve benzeri servislerin yaptığı gibi, sabit bir ip adresine sahip olmayan istemcilerin bir dns sunucusu üzerindeki uygulamaya bağlanarak ip adreslerini bildirmeleriyle otomatik olarak DNS kayıtlarının güncellenmesini sağlamak ve bu sayede dışarıdan her an bu istemcilere ulaşabilmek fikri var.    Bunun için biraz araştırma yapınca ihtiyacım olan şeyin WMI olduğunu buldum.…