C# Castle Windsor ve IoC Container Kullanımı

By Burak TUNGUT - 13.6.2013 - Kategori C#

Herkese Merhabalar,

2. sınıfa veda ettik, güzel bir yaza girişte yaptık derken farkettim ki uzun süredir makaleleri aksattımsmiley Daha fazla arayı soğutmadan hemen bir makaleye giriş yapalım.
Bir önceki makalemde C# ile Dependency Injection ve Loosely Coupling konusuna değinmiştik.Inversion of Control Container Aslında makalenin sonunda bu konuya daha farklı bir bakış açısı ile devam edeceğimizden bahsetmiştim.

Öyle sanıyorum bir önceki makalemde verdiğim örnekten dolayı artık sıkı bağlı tiplerden ve bu formu sağlayacak kodlamalardan uzaklaşacağız. Zaten makalede verdiğimiz örneği, Dependency Injection'ın hakkını vererek tekrar revize etmiş idik.

IoC Container

Bu makale de ise olayı bir kademe daha ileriye taşıyacağız. Bir önceki makale de işi yürütecek ve bundan önce instance alma işlemini yapacak kısmı bir metotda yapıyorduk. Böyle bir yapıda ise, söz konusu tipe işimiz her düştüğünde bir instance daha alınacak ve aynı işlemler tekrarlanacak.
Oysaki IoC Container'lar sayesinde, instance işlemini bir kereliğe mahsus yaptırabilir ve tipi kullanacağımız her bir işlemde ise bir önceki instancenin kullanılmasını sağlayabiliriz.

Envarterlerin İndirilmesi

Şu anda yapacağımız işlemlere karar verdik. Sıra sorunumuzu çözecek babayiğit bir IoC kütüphanesi bulmakta. Aklıma ilk gelen Microsoft ürünü olan, Ninject ve Castle Projects adı altında geliştirilen Windsor kütüphanesi.

Bu makalemde Windsor kütüphanesini kullanıyor olacağız. Tabi ki kodlama kısmına geçmeden önce kütüphanemizin en son sürümünü buradan indirelim.
İndirdiğimiz dosya içerisinden Castle.Core ve Castle.Windsor kütüphanelerini projemize ekleyelim.

Mouse ve Base Tiplerimiz

Hatırlarsanız bir önceki makalede son olarak bir adet IMouse adında bir interfaceimiz ve bu interfaceyi implemente eden iki farklı mouse tipimiz mevcuttu. Toplam da bu 3 tipi yeni projemiz de yine kullanıyor olacağız. Bu nedenle aşağıdaki tipleri projemize dahil edelim.

interface IMouse
    {
        void Write();
    }

 

class LogitechMouse : IMouse
    {
        public void Write()
        {
            Console.WriteLine("Logitech Mouse Kullanıldı");
        }
    }

    class A4TechMouse : IMouse
    {
        public void Write()
        {
            Console.WriteLine("A4Tech Mouse Kullanıldı");
        }
    }

Devamı
1
Facebook
Son Yorumlar