{"id":33675,"date":"2014-07-23T18:28:00","date_gmt":"2014-07-23T15:28:00","guid":{"rendered":"https:\/\/fatihboy.com\/?p=33675"},"modified":"2021-06-20T09:55:52","modified_gmt":"2021-06-20T06:55:52","slug":"ninject-giris","status":"publish","type":"post","link":"https:\/\/fatihboy.com\/en\/ninject-giris\/","title":{"rendered":"Dependency Injection \u2013 Ninject\u2019e Giri\u015f"},"content":{"rendered":"<p>&nbsp;&nbsp; <a href=\"\/en\/dependency-injection-uzerine\/\" target=\"_blank\" rel=\"noopener noreferrer\">Bir \u00f6nceki yaz\u0131mla<\/a> giri\u015f yapt\u0131\u011f\u0131m\u0131z Dependency Injection kavram\u0131 ard\u0131ndan s\u0131ra geldi Dependency Injection k\u00fct\u00fcphaneleri incelemeye. \u00d6nceli\u011fi gerek kullan\u0131m\u0131n kolay olmas\u0131, gerekse de g\u00f6rece g\u00fcncel olmas\u0131 nedeniyle pek \u00e7ok yeni C# \u00f6zelli\u011fini kulland\u0131ran <a href=\"http:\/\/www.ninject.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Ninject<\/a>\u2019e veriyorum.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Hat\u0131rlayacak olursak, bir \u00f6nceki yaz\u0131mda ba\u011f\u0131ml\u0131l\u0131klar\u0131 d\u0131\u015far\u0131dan enjekte edilmek \u00fczere OgrenciIslemleri s\u0131n\u0131f\u0131m\u0131z\u0131 a\u015fa\u011f\u0131daki \u015fekilde haz\u0131rlam\u0131\u015ft\u0131k;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">internal class OgrenciIslemleri {\n    private readonly IVeriDeposu veriDeposu;\n\tprivate readonly IGunlukDeposu gunlukDeposu;\n\n\tpublic OgrenciIslemleri(IVeriDeposu veriDeposu, IGunlukDeposu gunlukDeposu) {\n\t\tthis.veriDeposu = veriDeposu;\n\t\tthis.gunlukDeposu = gunlukDeposu;\n\t}\n\n\tpublic void OgrenciKaydet(Ogrenci ogrenci) {\n\t\ttry {\n\t\t\tgunlukDeposu.Debug(\"\u00d6\u011frenci kayd\u0131 yap\u0131l\u0131yor...\");\n\n\t\t\tvar referansId = veriDeposu.Kaydet(ogrenci);\n\n\t\t\tgunlukDeposu.Debug(\"\u00d6\u011frenci kayd\u0131 yap\u0131ld\u0131. Referans Id : {0}\", referansId);\n\t\t}\n        catch (Exception istisna){\n\t\t\tgunlukDeposu.Error(\"\u00d6\u011frenci kayd\u0131 s\u0131ras\u0131nda beklenmeyen bir hata olu\u015ftu : {0}\", istisna);\n\t\t}\n\t}\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Devam\u0131nda da uygulamam\u0131z\u0131n ana fonksiyonu i\u00e7erisinde ba\u011f\u0131ml\u0131kl\u0131klar\u0131 a\u015fa\u011f\u0131daki \u015fekilde enjekte etmi\u015ftik;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class Program {\n    static void Main(string[] args) {\n        var ogrenci = new Ogrenci {\n            No = 12345,\n            Adi = \"Fatih\",\n            Soyadi = \"Boy\",\n            Bolum = \"Bilgisayar M\u00fchendisli\u011fi\"\n        };\n\n        IVeriDeposu veriDeposu = new VeriTabaniDesposu();\n        IGunlukDeposu gunlukDeposu = new TextGunlukDeposu();\n\n        var ogrenciIslemleri = new OgrenciIslemleri(veriDeposu, gunlukDeposu);\n\n        ogrenciIslemleri.OgrenciKaydet(ogrenci);\n    }\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Ninject\u2019in kullan\u0131m\u0131 da asl\u0131nda bu kadar kolay. \u00d6ncelikle projemize <a href=\"https:\/\/www.nuget.org\/packages\/Ninject\/\" target=\"_blank\" rel=\"noopener noreferrer\">Ninject NuGet paketini<\/a> eklemeliyiz;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2014\/07\/Ninject-NuGet-paketi.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2014\/07\/Ninject-NuGet-paketi_thumb.png\" alt=\"Ninject NuGet paketi\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; Devam\u0131nda da t\u00fcm sihirin d\u00f6nece\u011fi Ninject \u00e7ekirde\u011fini ilklendirmeliyiz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">IKernel kernel = new StandardKernel();<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Bir sonraki ad\u0131mda Ninject \u00e7ekirde\u011fine, aray\u00fczler ve implementasyonlar\u0131 e\u015fle\u015ftirmelerini bildirmeliyiz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">kernel.Bind&lt;IVeriDeposu>().To&lt;XmlDosyaVeriDesposu>();\nkernel.Bind&lt;IGunlukDeposu>().To&lt;TextGunlukDeposu>();<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Her ne kadar yukar\u0131daki sat\u0131rlarda Ninject s\u00f6z dizimi neler olup ditti\u011fini anlat\u0131yor olsa da bir kez de ben belirtmek isterim. Ninject \u00e7ekirde\u011fine IVeriDeposu aray\u00fcz\u00fc soruldu\u011funda yan\u0131t olarak XmlDosyaVeriDesposu s\u0131n\u0131f\u0131n\u0131n bir \u00f6rne\u011fini vermesi gerekti\u011fini, IGunlukDeposu soruldu\u011funda ise TextGunlukDeposu s\u0131n\u0131f\u0131n\u0131n bir \u00f6rne\u011fini vermesi gerekti\u011fini ifade ediyoruz.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Son ad\u0131mda ise Ninject \u00e7ekirde\u011finden OgrenciIslemleri s\u0131n\u0131f\u0131n\u0131n bir \u00f6rne\u011fini istiyoruz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var ogrenciIslemleri = kernel.Get&lt;OgrenciIslemleri>();<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Kodumuzu toplarlad\u0131\u011f\u0131m\u0131zda a\u015fa\u011f\u0131daki \u015fekilde olacakt\u0131r;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class Program {\n    static void Main(string[] args) {\n        var ogrenci = new Ogrenci {\n            No = 12345,\n            Adi = \"Fatih\",\n            Soyadi = \"Boy\",\n            Bolum = \"Bilgisayar M\u00fchendisli\u011fi\"\n        };\n\n        IKernel kernel = new StandardKernel();\n\n        kernel.Bind&lt;IVeriDeposu>().To&lt;XmlDosyaVeriDesposu>();\n        kernel.Bind&lt;IGunlukDeposu>().To&lt;TextGunlukDeposu>();\n\n        var ogrenciIslemleri = kernel.Get&lt;OgrenciIslemleri>();\n\n        ogrenciIslemleri.OgrenciKaydet(ogrenci);\n    }\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Bu kadar basit..<\/p>\n\n\n\n<p>&nbsp;&nbsp; <strong><span style=\"font-size: medium;\">\u015eimdi s\u0131ra geldi arka planda olup biteni incelemeye;<\/span><\/strong><\/p>\n\n\n\n<p>&nbsp; T\u00fcr e\u015fle\u015ftirmeleri ile birlikte Ninject \u00e7ekirde\u011fine neleri kullanmak istedi\u011fimizi belirttik; ama dikkat edecek olursan\u0131z bu tan\u0131mlamalar aras\u0131nda OgrenciIslemleri i\u00e7in bir girdi bulunmuyor. Ninject, tan\u0131mlamas\u0131 yap\u0131lmam\u0131\u015f t\u00fcrler i\u00e7in ak\u0131ll\u0131 bir strateji takip etmekte. Buna g\u00f6re, e\u011fer talep edilen t\u00fcr i\u00e7in bir tan\u0131m bulunmuyorsa; fakat bu t\u00fcr\u00fcn bir \u00f6rne\u011fini olu\u015fturabiliyorsa (<em>yani interface, abstract s\u0131n\u0131f v.s. de\u011filse<\/em>) varsay\u0131lan bir tan\u0131m ekleyerek t\u00fcr\u00fc yine kendisiyle e\u015fle\u015ftirir.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Sonraki ad\u0131mda s\u0131ra geliyor OgrenciIslemleri s\u0131n\u0131f\u0131n\u0131 ilklendirmeye. Ninject, \u00f6ncelikle s\u0131n\u0131f\u0131n varsay\u0131lan constructer\u2019\u0131 olup olmad\u0131\u011f\u0131n\u0131 kontrol edecektir. Bizim \u00f6rne\u011fimizde oldu\u011fu gibi varsay\u0131lan constructer\u2019\u0131n bulunmamas\u0131 durumunda ise buldu\u011fu constructer\u2019lar aras\u0131nda en fazla t\u00fcr bilgisi e\u015fle\u015ftirmesine sahip oldu\u011fu constructer\u2019\u0131 kullanacakt\u0131r. IVeriDeposu\u2019nun bir \u00f6rne\u011finin talep edildi\u011fi ilk parametre i\u00e7in Ninject XmlDosyaVeriDeposu\u2019nu kullan\u0131rken, IGunlukDeposu \u00f6rne\u011fi olarak TextGunlukDeposu kullan\u0131lacakt\u0131r. Bu iki parametre ile OgrenciIslemleri s\u0131n\u0131f\u0131 ilklendirilerek bize teslim edilecektir.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Ninject\u2019in en sevdi\u011fim \u00f6zelliklerinden birisi de yukar\u0131da s\u0131ralad\u0131\u011f\u0131m ilklendirme silsilesini ba\u011fl\u0131 t\u00fcm t\u00fcrler i\u00e7in i\u00e7 i\u00e7er yapabilmesi. \u00d6rne\u011fin; IVeriDeposu \u00f6rne\u011fi i\u00e7in tan\u0131mlad\u0131\u011f\u0131m\u0131z XmlDosyaVeriDesposu s\u0131n\u0131f\u0131da constructer\u2019\u0131nda a\u015fa\u011f\u0131daki gibi IGunlukDeposu \u00f6rne\u011fi talep etseydi kodumuzda en ufak bir de\u011fi\u015fiklik yapmam\u0131za gerek olmayacakt\u0131.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">internal class XmlDosyaVeriDesposu : IVeriDeposu {\n    private readonly IGunlukDeposu gunlukDeposu;\n\n    public XmlDosyaVeriDesposu(IGunlukDeposu gunlukDeposu){\n\t\tthis.gunlukDeposu = gunlukDeposu;\n    }\n\n    public long Kaydet(object veri) {\n        throw new NotImplementedException();\n    }\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; \u00d6rnekten de g\u00f6rebilece\u011finiz gibi, Ninject\u2019in yukar\u0131da payla\u015ft\u0131\u011f\u0131m ilklendirme mekanizmas\u0131 sayesinde uygulamam\u0131z i\u00e7erisinde olduk\u00e7a esnekli\u011fe sahip olabiliriz. Uygulama bile\u015fenlerimiz do\u011frudan birbirleri hakk\u0131nda bilgi sahibi olmayarak t\u00fcm ileti\u015fim aray\u00fczler (kontratlar\u0131m\u0131z) \u00fczerinden gidece\u011fi i\u00e7in istedi\u011fimiz anda, istedi\u011fimiz bile\u015feni bir ba\u015fka implementasyonu ile de\u011fi\u015ftirmemiz olduk\u00e7a kolay. Asl\u0131nda bu bahsetti\u011fim durum \u00f6nceki makalemde s\u00f6z\u00fcn\u00fc etti\u011fim <strong>gev\u015fek ba\u011fl\u0131 (loosely coupled)<\/strong> uygulama prensibine bire bir uymakta.<\/p>\n\n\n\n<p>&nbsp;&nbsp; <strong><span style=\"font-size: medium;\">Enjeksiyon desenleri;<\/span><\/strong><\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Dikkat ettiyseniz \u015fimdiye kadar payla\u015ft\u0131\u011f\u0131m \u00f6rnekler <strong>Constructer Injection<\/strong> y\u00f6ntemini kullanmakta. Ninject, <em>Constructer Injection<\/em> d\u0131\u015f\u0131nda <strong>Property Setter Injection<\/strong> ve <strong>Setter Method Injection<\/strong> y\u00f6ntemlerini de desteklemekte.<\/p>\n\n\n\n<p>&nbsp;&nbsp; <em>Property Setter Injection<\/em> y\u00f6netimde, Ninject\u2019in ba\u011f\u0131ml\u0131l\u0131klar\u0131 enjekte etmesini istedi\u011finiz property\u2019leri belirtmeniz gereklidir. Bu \u00f6n ko\u015ful isteminiz d\u0131\u015f\u0131nda t\u00fcm property\u2019lere enjeksiyon yap\u0131lmas\u0131n\u0131n \u00f6n\u00fcne ge\u00e7ti\u011fi gibi performansa da olumlu bir etkisi vard\u0131. Property\u2019lerin i\u015faretlenmesi i\u015fi <strong>Inject<\/strong> \u00f6zniteli\u011fi yard\u0131m\u0131yla a\u015fa\u011f\u0131daki \u015fekilde yap\u0131labilir;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">internal class OgrenciIslemleri {\n\t[Inject]\n    public IVeriDeposu VeriDeposu { private get; set; }\n\n\t[Inject]\n\tpublic IGunlukDeposu GunlukDeposu { private get; set; }\n\n\tpublic void OgrenciKaydet(Ogrenci ogrenci) {\n\t\ttry {\n\t\t\tGunlukDeposu.Debug(\"\u00d6\u011frenci kayd\u0131 yap\u0131l\u0131yor...\");\n\n\t\t\tvar referansId = VeriDeposu.Kaydet(ogrenci);\n\n\t\t\tGunlukDeposu.Debug(\"\u00d6\u011frenci kayd\u0131 yap\u0131ld\u0131. Referans Id : {0}\", referansId);\n\t\t}\n        catch (Exception istisna){\n\t\t\tGunlukDeposu.Error(\"\u00d6\u011frenci kayd\u0131 s\u0131ras\u0131nda beklenmeyen bir hata olu\u015ftu : {0}\", istisna);\n\t\t}\n\t}\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Ninject bu \u00f6rnekte VeriDeposu ve GunlukDeposu property\u2019lerini i\u015faretledi\u011fimiz i\u00e7in OgrenciIslemleri s\u0131n\u0131f\u0131n\u0131 <strong>ilklendirdikten sonra<\/strong> enjekte edecektir.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Benzer \u015fekilde, OgrenciIslemleri s\u0131n\u0131f\u0131na Setter Method Injection y\u00f6ntemi ile ba\u011f\u0131ml\u0131l\u0131klar\u0131 enjekte edebiliriz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">internal class OgrenciIslemleri {\n    private IVeriDeposu veriDeposu;\n\tprivate IGunlukDeposu gunlukDeposu;\n\n\t[Inject]\n    public void VeriDeposu(IVeriDeposu veriDeposu){\n        this.veriDeposu = veriDeposu;\n    }\n\n\t[Inject]\n    public void GunlukDeposu(IGunlukDeposu gunlukDeposu){\n        this.gunlukDeposu = gunlukDeposu;\n    }\n\n\tpublic void OgrenciKaydet(Ogrenci ogrenci) {\n\t\ttry {\n\t\t\tgunlukDeposu.Debug(\"\u00d6\u011frenci kayd\u0131 yap\u0131l\u0131yor...\");\n\n\t\t\tvar referansId = veriDeposu.Kaydet(ogrenci);\n\n\t\t\tgunlukDeposu.Debug(\"\u00d6\u011frenci kayd\u0131 yap\u0131ld\u0131. Referans Id : {0}\", referansId);\n\t\t}\n        catch (Exception istisna){\n\t\t\tgunlukDeposu.Error(\"\u00d6\u011frenci kayd\u0131 s\u0131ras\u0131nda beklenmeyen bir hata olu\u015ftu : {0}\", istisna);\n\t\t}\n\t}\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; \u0130lerleyen makalelerde, payla\u015faca\u011f\u0131m \u00f6rneklerle Ninject (<em>dolay\u0131s\u0131yla da Dependency Injection<\/em>) ile birlikte elde etti\u011fimiz bu gev\u015fek ba\u011flar\u0131n uygulama tasar\u0131m\u0131m\u0131z\u0131 nas\u0131l olumlu y\u00f6nde etkiledi\u011fini g\u00f6rece\u011fiz.<\/p>","protected":false},"excerpt":{"rendered":"<p>&nbsp;&nbsp; Bir \u00f6nceki yaz\u0131mla giri\u015f yapt\u0131\u011f\u0131m\u0131z Dependency Injection kavram\u0131 ard\u0131ndan s\u0131ra geldi Dependency Injection k\u00fct\u00fcphaneleri incelemeye. \u00d6nceli\u011fi gerek kullan\u0131m\u0131n kolay olmas\u0131, gerekse de g\u00f6rece g\u00fcncel olmas\u0131 nedeniyle pek \u00e7ok yeni C# \u00f6zelli\u011fini kulland\u0131ran Ninject\u2019e veriyorum. &nbsp;&nbsp; Hat\u0131rlayacak olursak, bir \u00f6nceki yaz\u0131mda ba\u011f\u0131ml\u0131l\u0131klar\u0131 d\u0131\u015far\u0131dan enjekte edilmek \u00fczere OgrenciIslemleri s\u0131n\u0131f\u0131m\u0131z\u0131 a\u015fa\u011f\u0131daki \u015fekilde haz\u0131rlam\u0131\u015ft\u0131k; internal class OgrenciIslemleri {&#8230;<\/p>\n<p><a class=\"read-more\" href=\"https:\/\/fatihboy.com\/en\/ninject-giris\/\">Read More<\/a><\/p>","protected":false},"author":1,"featured_media":33676,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[77,28],"tags":[315,314],"class_list":["post-33675","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-csharp","category-turkce","tag-dependency-injection","tag-ninject"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Dependency Injection \u2013 Ninject\u2019e Giri\u015f - Fatih Boy<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihboy.com\/en\/ninject-giris\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dependency Injection \u2013 Ninject\u2019e Giri\u015f - Fatih Boy\" \/>\n<meta property=\"og:description\" content=\"&nbsp;&nbsp; Bir \u00f6nceki yaz\u0131mla giri\u015f yapt\u0131\u011f\u0131m\u0131z Dependency Injection kavram\u0131 ard\u0131ndan s\u0131ra geldi Dependency Injection k\u00fct\u00fcphaneleri incelemeye. \u00d6nceli\u011fi gerek kullan\u0131m\u0131n kolay olmas\u0131, gerekse de g\u00f6rece g\u00fcncel olmas\u0131 nedeniyle pek \u00e7ok yeni C# \u00f6zelli\u011fini kulland\u0131ran Ninject\u2019e veriyorum. &nbsp;&nbsp; Hat\u0131rlayacak olursak, bir \u00f6nceki yaz\u0131mda ba\u011f\u0131ml\u0131l\u0131klar\u0131 d\u0131\u015far\u0131dan enjekte edilmek \u00fczere OgrenciIslemleri s\u0131n\u0131f\u0131m\u0131z\u0131 a\u015fa\u011f\u0131daki \u015fekilde haz\u0131rlam\u0131\u015ft\u0131k; internal class OgrenciIslemleri {...Read More\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihboy.com\/en\/ninject-giris\/\" \/>\n<meta property=\"og:site_name\" content=\"Fatih Boy\" \/>\n<meta property=\"article:published_time\" content=\"2014-07-23T15:28:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-06-20T06:55:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/ninja.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"1347\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Fatih Boy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Boy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihboy.com\/ninject-giris\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/ninject-giris\/\"},\"author\":{\"name\":\"Fatih Boy\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"headline\":\"Dependency Injection \u2013 Ninject\u2019e Giri\u015f\",\"datePublished\":\"2014-07-23T15:28:00+00:00\",\"dateModified\":\"2021-06-20T06:55:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/ninject-giris\/\"},\"wordCount\":821,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/ninject-giris\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/ninja.jpg\",\"keywords\":[\"Dependency Injection\",\"Ninject\"],\"articleSection\":[\"C#\",\"T\u00fcrk\u00e7e\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihboy.com\/ninject-giris\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihboy.com\/ninject-giris\/\",\"url\":\"https:\/\/fatihboy.com\/ninject-giris\/\",\"name\":\"Dependency Injection \u2013 Ninject\u2019e Giri\u015f - Fatih Boy\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/ninject-giris\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/ninject-giris\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/ninja.jpg\",\"datePublished\":\"2014-07-23T15:28:00+00:00\",\"dateModified\":\"2021-06-20T06:55:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihboy.com\/ninject-giris\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihboy.com\/ninject-giris\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/ninject-giris\/#primaryimage\",\"url\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/ninja.jpg\",\"contentUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/ninja.jpg\",\"width\":1800,\"height\":1347},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihboy.com\/ninject-giris\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fatihboy.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dependency Injection \u2013 Ninject\u2019e Giri\u015f\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihboy.com\/#website\",\"url\":\"https:\/\/fatihboy.com\/\",\"name\":\"Fatih Boy\",\"description\":\"Ki\u015fisel Web Sitesi\",\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihboy.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\",\"name\":\"Fatih Boy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"caption\":\"Fatih Boy\"},\"logo\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/fatihboy.com\"],\"url\":\"https:\/\/fatihboy.com\/en\/author\/fatih\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Dependency Injection \u2013 Ninject\u2019e Giri\u015f - Fatih Boy","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihboy.com\/en\/ninject-giris\/","og_locale":"en_US","og_type":"article","og_title":"Dependency Injection \u2013 Ninject\u2019e Giri\u015f - Fatih Boy","og_description":"&nbsp;&nbsp; Bir \u00f6nceki yaz\u0131mla giri\u015f yapt\u0131\u011f\u0131m\u0131z Dependency Injection kavram\u0131 ard\u0131ndan s\u0131ra geldi Dependency Injection k\u00fct\u00fcphaneleri incelemeye. \u00d6nceli\u011fi gerek kullan\u0131m\u0131n kolay olmas\u0131, gerekse de g\u00f6rece g\u00fcncel olmas\u0131 nedeniyle pek \u00e7ok yeni C# \u00f6zelli\u011fini kulland\u0131ran Ninject\u2019e veriyorum. &nbsp;&nbsp; Hat\u0131rlayacak olursak, bir \u00f6nceki yaz\u0131mda ba\u011f\u0131ml\u0131l\u0131klar\u0131 d\u0131\u015far\u0131dan enjekte edilmek \u00fczere OgrenciIslemleri s\u0131n\u0131f\u0131m\u0131z\u0131 a\u015fa\u011f\u0131daki \u015fekilde haz\u0131rlam\u0131\u015ft\u0131k; internal class OgrenciIslemleri {...Read More","og_url":"https:\/\/fatihboy.com\/en\/ninject-giris\/","og_site_name":"Fatih Boy","article_published_time":"2014-07-23T15:28:00+00:00","article_modified_time":"2021-06-20T06:55:52+00:00","og_image":[{"width":1800,"height":1347,"url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/ninja.jpg","type":"image\/jpeg"}],"author":"Fatih Boy","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Fatih Boy","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihboy.com\/ninject-giris\/#article","isPartOf":{"@id":"https:\/\/fatihboy.com\/ninject-giris\/"},"author":{"name":"Fatih Boy","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"headline":"Dependency Injection \u2013 Ninject\u2019e Giri\u015f","datePublished":"2014-07-23T15:28:00+00:00","dateModified":"2021-06-20T06:55:52+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihboy.com\/ninject-giris\/"},"wordCount":821,"commentCount":0,"publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"image":{"@id":"https:\/\/fatihboy.com\/ninject-giris\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/ninja.jpg","keywords":["Dependency Injection","Ninject"],"articleSection":["C#","T\u00fcrk\u00e7e"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihboy.com\/ninject-giris\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fatihboy.com\/ninject-giris\/","url":"https:\/\/fatihboy.com\/ninject-giris\/","name":"Dependency Injection \u2013 Ninject\u2019e Giri\u015f - Fatih Boy","isPartOf":{"@id":"https:\/\/fatihboy.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fatihboy.com\/ninject-giris\/#primaryimage"},"image":{"@id":"https:\/\/fatihboy.com\/ninject-giris\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/ninja.jpg","datePublished":"2014-07-23T15:28:00+00:00","dateModified":"2021-06-20T06:55:52+00:00","breadcrumb":{"@id":"https:\/\/fatihboy.com\/ninject-giris\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihboy.com\/ninject-giris\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/ninject-giris\/#primaryimage","url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/ninja.jpg","contentUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/ninja.jpg","width":1800,"height":1347},{"@type":"BreadcrumbList","@id":"https:\/\/fatihboy.com\/ninject-giris\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fatihboy.com\/"},{"@type":"ListItem","position":2,"name":"Dependency Injection \u2013 Ninject\u2019e Giri\u015f"}]},{"@type":"WebSite","@id":"https:\/\/fatihboy.com\/#website","url":"https:\/\/fatihboy.com\/","name":"Fatih Boy","description":"Ki\u015fisel Web Sitesi","publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihboy.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158","name":"Fatih Boy","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","caption":"Fatih Boy"},"logo":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/fatihboy.com"],"url":"https:\/\/fatihboy.com\/en\/author\/fatih\/"}]}},"brizy_media":[],"_links":{"self":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/33675","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/comments?post=33675"}],"version-history":[{"count":1,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/33675\/revisions"}],"predecessor-version":[{"id":33677,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/33675\/revisions\/33677"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media\/33676"}],"wp:attachment":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media?parent=33675"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/categories?post=33675"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/tags?post=33675"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}