C#

C# ta Multilanguage kullanımı

C# ile yazmış olduğunuz bir programın diğer dillerin desteğini eklemek istediğimizde c# ın multilanguage özelliğini kullanacağız. Bu işlemi diğer yollardan da yapabilirdik fakat biraz zorlanabiliriz. Öncelikle formumuza bir adet Resources dosyası ekliyoruz . More >

C# ta serialization ve deserialization işlemleri

C# ta serialization ve deserialization işlemleri

C# t serileştirme işlemleri: Oluşturduğumuz nesnelerin bilgilerini içeriğini bilgisayarımızın herhangi bir yerine kaydederek depolama işlemi olarak açıklayabiliriz.

.Net içerisinde çeşitli serileştirme yöntemleri vardır (binary, xml, SOAP) biz binary yani ikili serileştirmeyi inceleyelim.

Öncelikle serileştirme yapacağımız sınıfın ISerializable interfaceni desteklemesi gerekir. Binary serileştirme diğer serileştirmelere göre daha hızlıdır fakat içeriğini 2’lik sistem de olduğu için okuyamayız. Binary serileştirme işlemini yapabilmek için System.Runtime.Serialization.Formatters.Binary kütüphanesini ekliyoruz. Basit bir class yazarak bunu binary formata dönüştürüp bilgisayarımıza kaydedelim. More >

C#’ta reflection kullanımı

C# ile kod yazarken hep modüler programlamayı merak ederdim pek de kaynak yok bu konuda. Programlarımda dll ile çalışmak ve ilerde programın geliştirilmeye açık olması buna örnek olarak update veya eklentileri örnek verebiliriz.

Siz bir dll oluşturuyorsunuz başkası sizin dll nizi kopyalarak kendi programında kullanabiliyor. Modüler programlama denen şey bu heralde :) Aslında bu konuya yoğunlaşmam sinan arkadışım hala ne işe yaradığını çözemediğim Toplu adlandırıcı programının betasını :) incelememden sonra olmuştur. More >

C#’ ta uygulama kısayolu oluşturma

Kısayol SimgesiArkaplan-Resmi:com sitemi biliyor musunuz, bilmiyorum ? Eğer biliyorsanız bu site için yaptığım duvarkağıdı değiştiriciyi belki görmüşsünüzdür. Tee 10 ay önce yapmıştım o programı. Eksikleri çoktu hatta yeni bir sürüm üzerinde çalışıyordum. Bu arada eski sürümünü de güncelleyeyim dedim ki, şu yüzden: son zamanlarda indiren kişi sayısı anlayamadığım bir şekilde arttı. Bende yarım yamalak çalışan bir program kullanmasınlar diye eski sürümü güncelledim. More >

Singleton Design Pattern

Tasarım Desenleri (Design Pattern) ilk duyduğunuzda aklınıza gelen Kullanıcı Arayüzü ile alakalı bir terim değildir. Bunlara, uygulama kodları için oluşturulmuş kalıplardır diyebiliriz. İlk bakışta insana garip gelebiliyor ama öğrenmekten zarar çıkmaz. Belli olmazi bir gün lazım olur.
Baştan uyarayım bu makaleyi anlayabilmek için nesneye yönelik programlamayı bilmeniz gerekmektedir.
Burada Singleton deseninden bahsedeceğim. İlk önce şunu açıklığa kavuşturalım. Bu nerelerde lazım olabilir.
Bir örnekle açıklamaya çalışayım. Bir seçenek yönetici sınıfımız olsun. Bu sınıf uygulamamızda kullanacağımız işlemler için kullanıcı seçeneklerini yöneten özelliklere(property) sahip olsun. More >

‘Microsoft.Jet.OLEDB.4.0′ sağlayıcısı yerel makine kayıtlı değil hatası

C# ile veritabanı bağlantıları üzerine bir proje vermişti hoca SQL server ve bunun dışındaki diğer veritabanlarına bağlanmak için registy e connection bilgilerini yazacaktık.SQL server la ilgili kısmı yazarken hiçbir sorunla karşılaşmadım fakat access veritabanına bağlanmak istediğimde kodların hepsi doğru olmasına rağmen  ‘Microsoft.Jet.OLEDB.4.0′ sağlayıcısı yerel makine kayıtlı değil diye bir hata verdi. More >

Toplu Adlandırıcı 2

Yaklaşık 1.5 yıl önce, o zamanlar C#’ ı yeni öğreniyordum, Kapatma Sayacından sonra yapacak program arıyordum. Hatırlıyorum, yaz tatilinde evde yapmıştım ilk Toplu Adlandırıcı uygulamasını. O zamanlar içerisinde sadece bir iki String fonksiyonu vardı ama her projem gibi bana bir şeyler öğretmeyi başarmıştı.

Şimdiki C# bilgim o zaman ki bilgimin 2-3 katı diyebilirim. Yani yeni program bence çok güzel bir uygulama oldu. Hatta üniversitelerde ders diye okutulmalı :) .

Aslında ikinci TopAd fikri geçen sene aklıma gelmişti. Hatta bir arayüz, birkaç metod fln. da hazırlamıştım. Fakat, eksik bir şey vardı. Program istediğim gibi sonradan özellik kazandırılabilir değildi. Yani programı nasıl yaptıysam öyle devam edecekti. Programı geliştirmek istesem yine yüzlerce satır kod arasında boğulacaktım ve bunu sadece ben yapabilecektim. Başkasının da katkı yapabileceği bir program (yani modüler program – buna eklenti desteği de diyebiliriz) değildi ve o zaman böyle bir program yazamazdım.

Bu sene (hatta bir kaç hafta önce) System.Reflections üyeleriyle çalışma zamanında uygulamaya kütüphane dahil edilebildiğini öğrendim. Belki daha başlangıç ama yazının girişinde de dediğim gibi her uygulamam bana bir şeyler öğretmiştir.

Önce size bu konuda yüzeysel bir bilgi vereyim. Derinlemesine bilgi isterseniz size Projemi incelemenizi öneririm. Bir uygulamaya çalışma zamanında kütüphane eklemek için:

System.Reflections.Assembly asm = System.Reflections.Assembly.LoadFrom("kutuphane.dll");

metodunu kullanıyoruz. Peki bu kütüphane içerisinde ki sınıfları yani tipleri nasıl kullanıcaz. Bunun için:

Type tip = asm.GetType("MyClass");

metodunun döndürdüğü Type nesnesini kullanıyoruz. MyClass bizim kütüphanemizin içerisindeki bir sınıf. Bu Type nesnesi bizim kütüphanemiz içerisindeMyClass sınıfının bilgisini tutar. Ama biz bilgisini istemiyoruz kullanmak istiyoruz diyorsanız bunun biraz zahmetli olduğunu belirteyim. İlk önce bu tipinYapılandırıcı Fonksiyonlarının bir dizisini elde etmeliyiz. Sonra Invoke(object) metoduyla bu tipin bir nesnesini üreteceğiz.

System.Reflections.ConstructorInfo[] ci = tip.GetConstructors();
object obj = ci[0].Invoke(null);

Yukarıda ki kod sadece parametresiz Yapılandırıcı için geçerli. Parametreli yapılandırıcı için null yazan yere parametreleri yazmamız gerekiyor.obj nesnesi bizim kütüphanemizin içerisindeki ilk tip türünden bir nesne oluyor. Peki bu tip içerisindeki bir metodu çağırmak istersek ne yapacağız. Aslında yukarıdakine benzer bir şey yapacağız:

int i = 5;
System.Reflections.MethodInfo mi = tip.GetMethod("MyMethod");
object ret = mi.Invoke(obj, new object[] { i });

Yukarıda int MyClass.MyMethod(int) prototipine sahip bir fonksiyonun nasıl çağırıldığını anlattım.  Invoke(object, object[]) metodunun ilk parametresi üstte elde ettiğimiz MyClass türünden bir nesne. İkinici parametresi ise bu metoda göndereceğimiz parametrelerin dizisi. Bir tane parametre bile göndersek yine dizi şeklinde göndermeliyiz. Basit bir i tam sayısını parametre olarak gönderiyoruz ve geriye dönen değeri ret nesnesine atıyoruz.

Basit olarak anlatımı bu kadar. Şimdi benim Toplu Adlandırıcı 2 programının özelliklerine bakalım.

  • Eklenti Desteği (Eklenti yazmak ve işin püf noktalarını öğrenmek isteyenler bana mail gönderebilir – ssinanyil@gmail.com)
  • Seçilen dosyalar içerisinde sıralama yapma. (ListViewSortManager için Eddie Velasquez’ e teşekkür ederim. Thanks man! :) )
  • Sürükle bırak desteği
  • Dosyaları isimlendirmeden önce Önizleme özelliği
  • Dosyaları isimlendirdikten sonra Geri Alma özelliği
  • Ayrıca kodları da açık
  • Sadece 552 KB ve taşınabilir

Ekran Görüntüleri :

Daha sonra ekleyeceğim, bu cafe bilgisayarında .NET yüklü değil anlaşılan

İndirmeler :

  • Uygulama Çalıştırılabilir Dosyası için tıklayın. (86 KB – RAR arşivi)
  • Proje dosyaları için tıklayın. (882 KB – RAR arşivi)
  • Eklenti yazmak için gerekli kütüphaneyi indirmek için tıklayın. (4 KB – RAR arşivi)