Dependency Injection — Ninject Kullanımı

Merhabalar, yaygın olarak kullanılan kütüphanelerden bir tanesi Ninject’tir. İncelemek için bir önceki Dependency Injection örneğinin aynısı üzerinden gideceğiz. Yaptığımız örnekle çok benzer olduğunu söyleyebilirim. Hatta standart Dependency Injection kullanımına göre birazdaha fazla kod yazdığımızı görebilirsiniz. Fakat kurumsal projelerde yaygın kullanımının arkasında yatan sebep sadece standart kullanımlarından ziyade, projelerimizde birden fazla “loosely coupled” yani “gevşek bağlı” yapıları kullanma gerekinimindeki karmaşıklığı en az seviyieye indirmektedir. Birden fazla gevşek bağlı yapı durumuna örneğimizde deyineceğiz. Öncelikle Nuget paketinden

Install-Package Ninject

şeklinde Ninject paketini projemize indirip kuruyoruz. Daha sonrasında interface ve implemente yapılacak class larımızı oluşturuyoruz.

Bu aşamaya kadar bir önceki örneğimizin aynısını yapıyoruz. Daha sonra yine bir önceki örneğimizdeki gibi sınıfları yönetebilmemiz için LogManager yapısını oluşturuyoruz.

Bu sınıfımızdaki tek fark [Inject] tanımımlasıdır. LogManager yapısını kullanırken hangi sınıfı çağıracağımızı Ninject.Modules.NinjectModule sınıfınından ayarlayabilmekteyiz. Bu modül sınıfının en güzel yanı daha sonra ihtiyacımız olabilecek birden fazla “gevşek bağlı” yapılarımızın “Bind” işlemlerini yapabilmemizdir.

Bu tanımlamanın anlamı ILogger tipindeki sınıf istendiğinde otomatik olarak DatabaseLogger sınıfını döndürecektir. Daha sonra Main sınıfımızın içerisinde ilgili kodları aşağıdaki gibi oluşturuyoruz.

Bu kod parçasındaki dikkat edilmesi gereken nokta new StandartKernel içerisinde load metoduna Bindings sınıfımızı göndermektir. Bu şekilde yapılandırma sınıfını Ninject’e set etmiş oluyoruz. Birden fazla “gevşek bağlı” bir yapıyı aşağıdaki gibi yine NinjectModules yapsısındaki Bindings sınıfımız ile yapılandırabiliriz.

Bindings sınıfımız içerisine aynı şekilde diğer Dependency Injection yapısının tanımını yapabiliriz.

Main sınıfının içerisinde aynı şekilde yeni eklediğimiz IConnection yapımızı işleme alabiliriz.

Bir sonraki makalede görüşmek üzere.

Sosyal medyada paylaşabilirsiniz..

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir