Yakın zamanda başıma gelen bir sorun ile alakalı bu yazımı yazıyorum. Sonra ki yazılarımızda Castle Windsor nedir detaylı bir şekilde anlatabiliriz. Nuget üzerinden projemize ekleyebiliriz. Şimdilik bu bölümü geçiyorum. Castle.MicroKernel.Registration > IRegistration arayüzünü implemente ettikten sonra IKernelIternal tipinden parametre alan "Register" methodunda register işlemi yapıyoruz.

  public void Register(IKernelInternal kernel)
    {
    kernel.Register(Component.For().DependsOn(Property.ForKey().Eq("ConnectionString");
    }

Burada belirtilen "DbContext" sizin somut context nesneniz olmalı. ConnectionString buraya static yazmak mantıklı değil, bunun için .net core startup içerisinde IConfiguration arayüzünü constractur üzerinden burada kullanabiliriz. Register edeceğimiz class adını "ComponentRegister" koyduk diyelim.

 IConfiguration _configuration;
        public ComponentRegister(IConfiguration configuration)
        {
            _configuration = configuration;
        }
        public void Register(IKernelInternal kernel)
        {
            
            kernel.Register(Component.For().DependsOn(Property.ForKey().Eq(_configuration.GetConnectionString("DefaultConnection"))));
           
        }
     

Register işlemlerinizi static bir manager class üzerinden yapabilirsiniz.

 public static class IOCManager
    {
        private static IWindsorContainer _container;
        //Initialize the container
        public static void Initialize(IConfiguration configuration)
        {
            _container = new WindsorContainer();
            _container.Register(new ComponentRegister(configuration));
        }
        //Resolve types
        public static T For()
        {
            return _container.Resolve();
        }
    }

IOCManager.For(); şeklinde register ettiğimizde DbContext'e ulaşabiliriz.

Samet ÇINAR Hakkında

2010 senesinden bu yana hem tam zamanlı hemde freelance olarak Yazılım Geliştirme Uzmanı olarak çalışmaktayım. Her gün daha güzel geliştirmeler yapmak için araştırıp öğrenmeyi, öğrendiklerimi aktarmayı çok seviyorum.

İLGİLİ YAZILAR

YORUMLAR

Yorum Yap