Mustafa ÖZCAN - Kişisel Web Sitesi

C# Nullable Tipler İçin Extension Methods ve Helper Method Kullanımı

mustafaozcan - 26.11.2009 09:39:00

Öncelikle Nullable tipler , Extension Methods ve Helper Method kavramlarını açıklayarak başlayalım. Daha sonra da Nullable tipler için kullanılacak örnek sınıflarımıza değinelim.

1 - Nullable Tipler :

C# ta Nullable tipler framework 2.0 ile birlikte gelmiştir. Nullable tipteki bir değişkene hem kendi türünden bir değer hemde null değer atanabilmektedir. Nullable tipler, tip tanımlaması sonuna ? konularak belirtilir. Örneğin: int? , DateTime? , bool? gibi.

Örnek bir class ve property üzerinde çalışalım.

public class Test
{

    private int? _sayi;

    public int? Sayi
    {
        get { return _sayi; }
        set { _sayi = value; }
    }

    public Test()
    {
    }

}

Bir butonumuz ve bir textbox ımız olduğunu varsayalım. Butona tıkladığımızda yukarıdaki class tan bir nesne türetip textbox tan gelen değeri Sayi property sine atayalım. Genel kullanım tarzı aşağıdaki gibi olacaktır.

Test t = new Test();

if (!string.IsNullOrEmpty(textbox1.Text))
    t.Sayi = Convert.ToInt32(textbox1.Text);
else
    t.Sayi = null;

Bu atama işlemini biraz daha kısa yazmak istersek aşağıdaki gibi yazabiliriz :

Test t = new Test();
t.Sayi = string.IsNullOrEmpty(textbox1.Text) ? (int?)null : Convert.ToInt32(textbox1.Text);

 

2 - Extension Methods :

Her atama işleminde örneklerdeki kadar çok kontrol yerine daha kısa yöntemler geliştirmek te mümkündür. Framework 3.5 ile birlikte Extension Methods desteği gelmiştir. Extension Methods desteği ile birlikte framework te var olan tiplere yeni metodlar ekleyebiliriz. Yazacağımız class ve metodlar static olmalıdır. Buradaki en önemli ayrıntı IkiKati metodu parametresi olan string str önündeki this anahtar sözcüğüdür. Bu kelime ile artık string türüne yeni bir metod daha kazandırmış oluyoruz.

Örneğin string bir değişkenin int e çevrilebiliyorsa 2 katını alan metod yazalım.

public static class StringExtensions
{
    public static int? IkiKati(this string str)
    {
        int i;
        if (Int32.TryParse(s, out i)) return i*2;
        return null;
    }
}

Evet sıra geldi bu metodun nasıl kullanılacağına. Biz stirng türü için bir metod yazdığımıza göre kullanım şekli de stringDegisken.IkiKati() biçimindedir.

Örnek olarak str değişkeninin değerini int e çevirerek iki katını Sayi değişkenine atamayı gösterelim.

string str = "3";
int? Sayi = str.IkiKati();

Bu şekilde çok kullandığınız metodları Extension Methods türüne çevirip bir dll haline getirerek bir çok projede kullanabilirsiniz.

 

3 - Helper Method :

Peki uygulamamız Framework 2.0 desteği ile geliştiriliyorsa Extension Methods özelliğini nasıl kullanabiliriz. Bunun cevabı da Helper Method olacaktır. Kullanımı Extension Methods a göre farklı ancak sizin zaten bildiğiniz fonksiyon kullanımından farklı olmadığını göreceksiniz.

Helper Class Örneği:

public static class StringHelper
{
    public static int? IkiKati(string str)
    {
        int i;
        if (Int32.TryParse(s, out i)) return i*2;
        return null;
    }
}

Helper Class Kullanımı :

string str = "3";
int? Sayi = StringHelper.IkiKati(str);

Bu açıklamalardan sonra her iki konu için örnek sınıflarımıza geçebiliriz.

 

4 - Nullable Tipler İçin Extension Methods Sınıfı :

Uygulamalarınız Framework 3.5 ve daha yukarı bir sürüme göre geliştiriliyorsa aşağıdaki sınıfı projenize dahil ederek kullanabilirsiniz. En çok ihtiyaç duyulan Nullable tipler için yazdığım örnek sınıf aşağıdadır.

public static class StringExtensions
{
    public static int? ParseNullableInt32(this string s)
    {
        int i;
        if (Int32.TryParse(s, out i)) return i;
        return null;

    }
    public static long? ParseNullableInt64(this string s)
    {
        long i;
        if (long.TryParse(s, out i)) return i;
        return null;
    }
    public static DateTime? ParseNullableDateTime(this string s)
    {
        DateTime i;
        if (DateTime.TryParse(s, out i)) return i;
        return null;
    }
    public static decimal? ParseNullableDecimal(this string s)
    {
        decimal i;
        if (decimal.TryParse(s, out i)) return i;
        return null;
    }
    public static double? ParseNullableDouble(this string s)
    {
        double i;
        if (double.TryParse(s, out i)) return i;
        return null;
    }
}

Bu metodları kullanarak Nullable türden bir değişkene değer ataması yapabilirsiniz. Eğer atamak istediğiniz değer o türe dönüştürülebiliyorsa değer atanır dönüştürelemez ise null değer atanır.

Örnek : Bir textbox tan gelen veriyi Personel sınıfının ilgili property sine atanması.

Personel p = new Personel();
p.KayitTarihi = txtKayitTarihi.Text.ParseNullableDateTime(); //p.KayitTarihi DateTime? dir.
p.Save();

5 - Nullable Tipler İçin Helper Method Sınıfı :

Projeleriniz Framework 2 desteğine göre geliştiriliyorsa Nullable tipler için aşağıdaki Helper Method sınıfını kullanabilirsiniz. 

public static class StringHelper
{
    public static int? ParseNullableInt32(string s)
    {
        int i;
        if (Int32.TryParse(s, out i)) return i;
        return null;
    }
    public static long? ParseNullableInt64(string s)
    {
        long i;
        if (long.TryParse(s, out i)) return i;
        return null;
    }
    public static DateTime? ParseNullableDateTime(string s)
    {
        DateTime i;
        if (DateTime.TryParse(s, out i)) return i;
        return null;
    }
    public static decimal? ParseNullableDecimal(string s)
    {
        decimal i;
        if (decimal.TryParse(s, out i)) return i;
        return null;
    }
    public static double? ParseNullableDouble(string s)
    {
        double i;
        if (double.TryParse(s, out i)) return i;
        return null;
    }
}

Örnek:

Personel p = new Personel();
p.KayitTarihi = StringHelper.ParseNullableDateTime(txtKayitTarihi.Text); //p.KayitTarihi DateTime? dir
p.Save();

Özellikle katmanlı uygulamarda veribanındaki nullable alanlara atama yapmak istediğinizde çok işinize yarayacaktır.

 


Paylaş

Taglar : ,

Kategoriler : C#

Ineta Next (Diyarbakır, İstanbul, Kayseri, Denizli)

mustafaozcan - 24.11.2009 20:11:00

Gelecek nesil yeni yazılım teknolojileri ile ilgili teknik bilgi paylaşımı çerçevesinde oturumların bulunacağı ayrıca Professional Developer Conference'da ilk defa duyurulacak bazı konuların da yer alacağı Ineta Next aşağıdaki tarihlerde ve yerlerde gerçekleştirilecektir. Şimdilik etkinlik detayları bir sürpriz/sır olarak saklanıyor. Çok yakında tam etkinlik planının duyurulacağı belirtilmektedir. Fakat bu süreçte siz zaman kaybetmeyin ve sınırlı katılım olacağı bu etkinliğe hemen ÜCRETSİZ kayıt olun!

5-6 Aralık / Diyarbakır

12-13 Aralık / İstanbul

19-20 Aralık / Kayseri

26-27 Aralık / Denizli

Kayıt için: http://www.inetatr.org


Paylaş

Taglar : , , ,

Kategoriler : ASP.NET | C# | Etkinlik

Visual Studio 2010 Beta 2 ve .NET Framework 4.0 Beta 2

mustafaozcan - 20.10.2009 23:42:00

Visual Studio 2010 Beta 2 ve .NET Framework 4.0 Beta 2 Yayınlandı. MSDN üyeleri yeni sürümleri hemen indirebilirken üye olmayanlar 21 Ekim Çarşamba günü Türkiye saati ile 20:00 itibari ile indirebilirler.

Visual Studio 2008 ile aynı bilgisayarda sorunsuz çalıştığı söylenmektedir. Beta 1 öyle idi ancak beta 2 yi henüz denemedim.

Başlıca değişiklikler :

  • Yeni Ürün Lisanslama Sistemi
    • Visual Studio Express
    • Visual Studio 2010 Professional with MSDN
    • Visual Studio 2010 Premium with MSDN
    • Visual Studio 2010 Ultimate with MSDN
  • Silverlight 3
  • ASP.NET MVC 2
  • UML araçları
  • Team Foundation Server (TFS) bütün Visual Studio paketlerine dahil edilmiş
  • Açılış sayfası değişiklikleri olarak belirtilmiş.

 

Visual Studio 2010 Beta 2 ve .NET Framework 4.0 Beta 2 indirmek için:

http://www.microsoft.com/visualstudio/en-gb/try/default.mspx

 

Visual Studio 2010 Beta 2 deki yenilikler hakkında geniş bir bilgi için:

http://msdn.microsoft.com/en-us/library/bb386063%28VS.100%29.aspx


Paylaş

Taglar : , ,

Kategoriler : Programlar

SubSonic 3 Sürümü Yayınlandı

mustafaozcan - 05.07.2009 15:32:00

 

SubSonic 3 sürümü yayınlandı. Framework 3.5 ve linq desteği kullanılan bu sürüm bir çok yeni özelliği de beraberinde getirmektedir.

Özellikle Migrations yada SimpleRepository diye adlandırılan kodlar sayesinde kendi oluşturduğunuz modellerin de veritabanı üzerinde oluşturulması artık çok kolay. Hatırlarsanız eski sürümlerde hep tek yönlü bir code generation olmaktaydı. Yani sadece database den class a, ancak yeni versiyon ile manuel oluşturduğunuz classların db ye oluşturulması çok kolay.

En büyük özelliklerden birisi de artık MVC projelerinde sorunsuz kullanılabilmektedir.

Projenin sitesi yenilenmiş, dökümantasyon daha anlaşılır bir şekilde gruplandırılmış, kaynak kodlar github a taşınmış.

Daha detaylı bilgi için :

Yenilenen Proje sitesi : subsonicproject.com

Yenilenen Dökümanlar

Yenilenen kaynak kod arşivi : http://github.com/subsonic


Paylaş

Taglar : , , , ,

Kategoriler : C# | Veritabanı (Database)

Visual Studio 2010 Beta 1 ve .NET Framework 4 Beta 1

mustafaozcan - 19.05.2009 18:12:00

Visual Studio 2010  Beta 1  ve .NET Framework 4 Beta 1 sürümü yayınlandı. Şu anda sadece MSDN üyeleri indirebiliyor ancak 20 Mayıs Çarşamba günü (Türkiye saati ile 20:00) itibaren herkes tarafından indirilebilir.

Linkler aktifleştiğinde aşağıdaki adreslerden indirebilirsiniz.


Başlıca dikkat çekilen noktalar ise şu şekilde sıralanmış.
  • .Net Framework 4.0
  • Cloud Development - Windows Azure
  • Parallel Development
  • TDD iyileştirmeleri
  • ASP.NET - CSS tasarım değişiklikleri
  • Javascript debugging iyileştirmeleri
  • C++ Compiler değişiklikleri
  • Sharepoint şablonları
  • Yeni proje şablonları
  • Windows 7 - MFC - Ribbon UI, ve WPF değişiklikleri.
  • Application Model değişiklikleri
  • Test Runne
  • C# ta dynamic keyword ü
  • F# artık yükleme paketine dahil

 

İncelemelerden sonra daha detaylı bilgi vermeye çalışacağım.

Ayrıca ASP.NET 4 iyileştirmelerini bu sayfadan okuyabilirsiniz (İngilizce)


Paylaş

Taglar : , , ,

Kategoriler : ASP.NET | C#

Visual Studio 2010 Yeni Kullanıcı Arabirimi

mustafaozcan - 02.03.2009 14:15:00
Visual Studio 2010 UI yeni görünümü duyuruldu. Beta 1 versiyonunda kullanılabilir olacak yeni IDE arayüzü .NET Framework 4.0 WPF teknojosi kullanılarak yapılmış. Ayrıca Visual Studio 2010 ile bir çok yeni özellik etkin olacak.

 

 

 

 

Kaynak: http://blogs.msdn.com/jasonz/archive/2009/02/20/a-new-look-for-visual-studio-2010.aspx

 


Paylaş

Taglar : , , ,

Kategoriler :

Baby Smash - Bebeklerde bilgisayar kullansın

mustafaozcan - 13.11.2008 10:47:00

Baby Smash : Microsoft PDC (Professional Developers Conference) 2008 de Scott Hanselman tarafından tanıtılan WPF uygulaması.

Peki nedir bu Baby Smash ? Bebeklerin bilgisayarlara olan merakını çocuk sahibi insanlar iyi bilir. Fakat bilgisayarı bebeğinize emanet ettiğinizde programları yerinde bulma şansınız oldukça düşük hatta bazı belgelerinizin silinmiş olma ihtimali bile var. Bu nedenle bebekleri bilgisayarınızı kullanmasına izin vermenin en güvenli ve en eğlenceli yolu Baby Smash.

Tam ekran olarak çalışan uygulama sayesinde bebekler mouse ve klavye ile değişik eğlenceli şekiller, harfler veya rakamlar ile oynayabiliyorlar. Klavyeden basılan harflerin İngilizce telaffuzlarını da söyleyebilen uygulama gayet hoş olmuş. Hatta gelen feedback leri okuyunca çok güzel önerilerde bulunanlar var. Bunların çoğu da planlamaya alınmış. Yeni sürümleri daha güzel olacak gibi.

Örnek bir video dosyasını ekliyorum:

 


 

Programı indirmek için tıklayın...

Daha fazla bilgi için  http://www.babysmash.com/

 


Paylaş

Taglar : , ,

Kategoriler : Programlar

Visual Studio 2010 ve .NET Framework 4.0 CTP

mustafaozcan - 29.10.2008 01:17:00

Kısa bir süre önce .NET logosunu da yenileyen Microsoft, Visual Studio 2010 ve .NET Framework 4.0 CTP sürümünü yayınladı. Yeni versiyon Visual Studio'yu denemek isteyenler sanal pc imajını indirdikten sonra Virtual PC ile açarak inceleyebilirler. Microsoft artık bir çok demoyu hazır kurulu halde sanal bilgisayar imajı olarak dağıtıyor ve çok ta iyi ediyor. Böylelikle siz test için ayrı bir donanım - zaman ayırmak zorunda kalmadan beta ürünleri test edebiliyorsunuz.

Microsoft Visual Studio 2010 ve .NET Framework 4.0 CTP sürümü VHD imajını yüklemek için tıklayın. (7.3 GB)


Paylaş

Taglar : , , , , , ,

Kategoriler : ASP.NET | Programlar

Family.Show - Türkçe v-2.1.0

mustafaozcan - 04.09.2008 18:39:00

Microsoft un WPF (Windows Presentation Foundation) için Vertigo firmasına yaptırmış olduğu soyağacı uygulaması olan Family.Show bir demo uygulama için gerçekten çok ileri düzeyde. Hatta Microsoft ta bir teknoloji tanıtımı için bugüne kadar gördüğüm en iyi demo uygulaması desem yanlış olmaz. Daha sonra kodları Codeplex e taşındı ve opensource hale getirildi. Bende bu uygulamadaki bazı hataları ve bence eksik olan kısımlarını değiştirdim ve Türkçe hale getirip yeniden derledim.

Family.Show 2.0 versiyonu kodlarında yaptığım başlıca değişiklikler:

  • Türkçeleştirme.
  • Data dosyaları artık belgelerim yerine kendi dizininde Data klasöründe saklamakta.
  • Kopyalanan resimden daha önce aynı isimde resim varsa üzerine yazmakta idi artık yeni isimle kaydetmekte.

Türkçeleştirme konusunda aile ilişkileri de string olarak tutultuğu için aile bağları yarı Türkçe halde tutulmuştur (Örneğin : KizKardesEkle gibi). Aile bağlarının string olarak data dosyasında saklanması nedeni ile ben bu versiyonda onları Türkçeleştirdiğim için daha önce İngilizce versiyonunda aile kaydı yapan kişiler için tekrar bir dönüştürücü uygulama yazmak gerekmektedir :( bu konuda vakit bulursam bir converter yazacağım.

Bu uygulamadan yeni haberdar olanlar için güzel haber ise tamamen Türkçe olarak ve yeni özellikleri ile bu uygulamayı kullanabilirler. Sadece .Net Framework 3.0 kurulu olması şartı ile uygulamayı taşınabilir halde de kullanabilirsiniz.

Uygulamadaki eksik olan diğer bir özellik ise akraba evliliklerinin işlenmesindeki problemlerdir. Uygulamayı kullandığınızda ailenizde bu tür evlilikler varsa bunların eklenmesinde farklı bir yol izlemek gerekmekte bu konuda farklı çözüm üretenler bulunmakla birlikte sizlerde kendi sisteminizle uygun bir kayıt yöntemi bulabilirsiniz :) 

Şaka bir yana bu konuda benimde araştırmalarım devam etmekte fakat bayağı bir kod değişikliği yapma hamaliyesi nedeni ile biraz beklemekte.

 

 

Family.Show Türkçe uygulamasının 2.1.0 versiyonunu indirmek ve daha detaylı bilgi almak için bloğumdaki proje sayfasından devam edebilirsiniz.

http://www.mustafaozcan.net/tr/page/FamilyShow-Turkce.aspx


Paylaş

Taglar : , , ,

Kategoriler : Programlar

Visual Studio 2008 Service Pack 1 ve .NET Framework 3.5 Service Pack 1 Sürümü Yayınlandı

mustafaozcan - 19.08.2008 10:45:00

Daha önce beta sürümünü duyurduğum Visual Studio 2008 Service Pack 1 and .NET Framework 3.5 Service Pack 1 Sürümü Yayınlandı.

Visual Studio 2008 Express Service Pack 1 li sürümlerinde artık Sql Server 2005 Express yerine Sql Server 2008 Express Edition gelmekte.

İnternete bağlı bir bilgisayara yükleme yapmak için için tıklayın.

ISO formatında bilgisayarınıza yüklemek için tıklayın.

Service Pack 1 dahil edilmiş Express Sürümleri ISO dosyasını indirmek için tıklayın.

Kurulum yapmadan önce :

- IDE ayarlarınızı yedekleyin.

- Eğer data önce beta versiyonunu yüklediyseniz SP1 i yüklemeden önce bu tool (Visual Studio 2008 Service Pack Preparation Tool)  u çalıştırmanız gerekmekte.


Paylaş

Taglar : , , , , ,

Kategoriler : ASP.NET | Win Forms

resimyok Mustafa ÖZCAN
Yazılım Geliştirici
E-mail Send mail

Bağış Yapın

Reklam

Online


Online Ziyaretçi : 13

Translate This Page

B l o g - E n g i n e