{"id":33493,"date":"2014-07-30T15:34:00","date_gmt":"2014-07-30T12:34:00","guid":{"rendered":"https:\/\/fatihboy.com\/?p=33493"},"modified":"2021-06-17T21:01:49","modified_gmt":"2021-06-17T18:01:49","slug":"ninject-yasam-dongusu-yonetimi","status":"publish","type":"post","link":"https:\/\/fatihboy.com\/en\/ninject-yasam-dongusu-yonetimi\/","title":{"rendered":"Ninject \u2013 Ya\u015fam D\u00f6ng\u00fcs\u00fc Y\u00f6netimi"},"content":{"rendered":"<p>&nbsp;&nbsp; Dependecy Injection k\u00fct\u00fcphanelerini incelerken \u00f6ncelikle t\u00fcrleri nas\u0131l ele ald\u0131klar\u0131, nas\u0131l olu\u015fturduklar\u0131 konusuna e\u011fildik. Dependecy Injection k\u00fct\u00fcphaneleri bu g\u00f6revlerini yerine getirirken ka\u00e7\u0131n\u0131lmaz olarak olu\u015fturduklar\u0131 nesnelerin ne zaman yeni bir \u00f6rne\u011finin olu\u015fturulmas\u0131 gerekti\u011fine, ne zaman mevcut bir \u00f6rne\u011fini kullan\u0131lmas\u0131 gerekti\u011fine karar vermelidirler. Hatta bundan da \u00f6te; olu\u015fturulan nesne \u00f6rneklerinin ne zaman haf\u0131zadan at\u0131lmas\u0131 gerekti\u011fine de karar vermelidirler. Bu bak\u0131\u015f a\u00e7\u0131s\u0131yla, Dependecy Injection k\u00fct\u00fcphaneleri nesnelerin ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc de y\u00f6netebilme yetene\u011fine sahiptirler. Ninject, ya\u015fam d\u00f6ng\u00fcs\u00fc y\u00f6netimini bir ad\u0131m ileri ta\u015f\u0131yarak geli\u015ftiricinin de bu d\u00f6ng\u00fcde karar verebilmesine imkan sunmaktad\u0131r.<\/p>\n\n\n\n<p>&nbsp;&nbsp; <a href=\"\/en\/?tag=dependency-injection\">\u00d6nceki makalelerim<\/a>de payla\u015ft\u0131\u011f\u0131m \u00f6rneklere dikkat edecek olursan\u0131z hepsinde her talepte bulundu\u011fumuzda ilgili t\u00fcr\u2019\u00fcn yeni bir \u00f6rne\u011fi verilmekteydi. \u00dcstelik bir geli\u015ftirici olarak biz nesnelerin ya\u015fam d\u00f6ng\u00fcleri konusunda Ninject\u2019e hi\u00e7bir bildirimde bulunmam\u0131\u015fken&#8230; Bu noktada Ninject\u2019in kullan\u0131m kolayl\u0131\u011f\u0131 \u00f6n plana \u00e7\u0131karak bizlerin aksini belirtmemiz durumunda varsay\u0131lan de\u011ferlerle kendisini yap\u0131land\u0131rmas\u0131 \u00f6nem kazan\u0131yor. Ninject, bu varsay\u0131lan ya\u015fam d\u00f6ng\u00fcs\u00fc kapsam\u0131 d\u0131\u015f\u0131nda bize farkl\u0131 se\u00e7enekler de sunarak t\u00fcrlerin ba\u011flanmas\u0131 yan\u0131nda ne kadar s\u00fcre ile ayn\u0131 t\u00fcr \u00f6rne\u011finin kullan\u0131laca\u011f\u0131na da karar verebilmemize olanak sa\u011flamakta. A\u015fa\u011f\u0131da, Ninject taraf\u0131ndan varsay\u0131lan olarak desteklenmekte olan nesne ya\u015fam d\u00f6ng\u00fcs\u00fc kapsamlar\u0131n\u0131 bulabilirsiniz;<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Transient<\/h1>\n\n\n\n<p>&nbsp;&nbsp; Ninject\u2019in varsay\u0131lan ya\u015fam d\u00f6ng\u00fcs\u00fc kapsam\u0131 olan Transient ile birlikte t\u00fcr \u00f6rnekleri her talepte bir \u00f6ncekinden ba\u011f\u0131ms\u0131z olarak yeniden olu\u015fturulmaktad\u0131r. Ninject, Transient olarak ba\u011flamas\u0131 yap\u0131lan bir t\u00fcr\u00fcn ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc hi\u00e7bir zaman i\u00e7in kontrol etmeyece\u011fi i\u00e7in \u00f6zellikle <em>IDisposable<\/em> aray\u00fcz\u00fcne sahip nesnelerin uygulaman\u0131z i\u00e7erisinde dispose edildi\u011fine emin olmal\u0131s\u0131n\u0131z. \u00d6te yandan bu yakla\u015f\u0131m C#\u2019\u0131n nesne ya\u015fam d\u00f6ng\u00fcs\u00fc yakla\u015f\u0131m\u0131 ile paralellik g\u00f6stermesi nedeniyle pek \u00e7ok uygulamada bir probleme neden olmamaktad\u0131r.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Transient kapsam\u0131, varsay\u0131lan olmas\u0131 nedeniyle \u00f6nceki makalelerimde \u00f6rnekledi\u011fim \u015fekilde tan\u0131mlanabilir;<\/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;IGunlukDeposu>().To&lt;TextGunlukDeposu>();<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Alternatif olarak, a\u015fa\u011f\u0131daki \u015fekilde <b>InTransientScope<\/b> fonksiyon \u00e7a\u011fr\u0131s\u0131 ile de tan\u0131mlama yap\u0131labilmesi m\u00fcmk\u00fcnd\u00fcr;<\/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;IGunlukDeposu>().To&lt;TextGunlukDeposu>().InTransientScope();<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Hat\u0131rlayacak olursan\u0131z \u00f6rne\u011fi olu\u015fturulabilir (<em>Interface, abstract s\u0131n\u0131f v.b. olmayan<\/em>) s\u0131n\u0131flarda bir binding tan\u0131m\u0131 yap\u0131lmamas\u0131 durumunda varsay\u0131lan olarak ayn\u0131 t\u00fcre ba\u011flama yap\u0131l\u0131yordu. \u0130stenirse ToSelf fonksiyon \u00e7a\u011fr\u0131s\u0131yla da belirtilebilen bu t\u00fcr ba\u011flamalar\u0131 i\u00e7in ayn\u0131 zamanda Transient kapsam\u0131 tan\u0131mlanm\u0131\u015f 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=\"\">kernel.Bind&lt;OgrenciIslemleri>().ToSelf();<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Singleton<\/h1>\n\n\n\n<p>&nbsp;&nbsp; Ad\u0131ndan da tahmin edebilece\u011finiz \u00fczere nesne \u00f6rne\u011fi uygulama ya\u015fam\u0131 boyunca sadece bir defa olu\u015fturulur ve yap\u0131lan t\u00fcm taleplerde ayn\u0131 nesne \u00f6rne\u011fi payla\u015f\u0131l\u0131r. Transient kapsam\u0131ndan farkl\u0131 olarak Singleton kapsam\u0131nda nesnelerin dispose edilmesi Ninject \u00e7ekirde\u011fi taraf\u0131ndan takip edilmektedir. Bu sebeple Singleton kapsam\u0131 ile olu\u015fturulmu\u015f bir nesne Ninject \u00e7ekirde\u011fi ile birlikte dispose edilecektir.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Singleton kapsam tan\u0131mlamas\u0131 i\u00e7in t\u00fcr ba\u011flamas\u0131nda <b>InSingletonScope<\/b> fonksiyon \u00e7a\u011fr\u0131s\u0131 yap\u0131lmal\u0131d\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=\"\">kernel.Bind&lt;IGunlukDeposu>().To&lt;TextGunlukDeposu>().InSingletonScope();<\/pre>\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;OgrenciIslemleri>().ToSelf().InSingletonScope();<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Alternatif olarak, <b>ToConstant<\/b> fonksiyon \u00e7a\u011fr\u0131s\u0131 ile t\u00fcr ba\u011flamas\u0131 t\u00fcr\u00fcn do\u011frudan bir \u00f6rne\u011fi i\u00e7in yap\u0131lmaktad\u0131r. Dolay\u0131s\u0131yla da ToConstant fonksiyonu do\u011frudan bir Singleton kapsam\u0131 olu\u015fturacakt\u0131r.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Thread<\/h1>\n\n\n\n<p>&nbsp;&nbsp; Bu kapsamda, talep edilen nesneler ba\u011fl\u0131 olduklar\u0131 thread i\u00e7erisinde bir defa olu\u015fturularak bu thread\u2019den gelen takip eden taleplerde ayn\u0131 \u00f6rnek payla\u015f\u0131lmaktad\u0131r. Singleton kapsam\u0131ndan farkl\u0131 olarak Thread kapsam\u0131nda nesnelerin tekilli\u011fi thread i\u00e7erisindedir. Nesnenin ya\u015fam \u00f6mr\u00fc talep edildi\u011fi thread ile s\u0131n\u0131rl\u0131d\u0131r. Ninject \u00e7ekirde\u011fi ilgili thread\u2019in sonlanmas\u0131 s\u0131ras\u0131nda nesneyi dispose edecektir.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Thread kapsam tan\u0131mlamas\u0131 i\u00e7in t\u00fcr ba\u011flamas\u0131nda <b>InThreadScope <\/b>fonksiyon \u00e7a\u011fr\u0131s\u0131 yap\u0131lmal\u0131d\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=\"\">kernel.Bind&lt;IGunlukDeposu>().To&lt;TextGunlukDeposu>().InThreadScope();<\/pre>\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;OgrenciIslemleri>().ToSelf().InThreadScope();<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Request<\/h1>\n\n\n\n<p>&nbsp;&nbsp; Web uygulamalar\u0131 i\u00e7in kullan\u0131labilen bu kapsam, her bir web iste\u011fi i\u00e7in nesnenin sadece bir defa olu\u015fturulmaktad\u0131r. Web request\u2019in sonlanmas\u0131 ile birlikte nesne Ninject \u00e7ekirde\u011fi taraf\u0131ndan dispose edilecektir.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Request kapsam tan\u0131mlamas\u0131 i\u00e7in t\u00fcr ba\u011flamas\u0131nda <b>InRequestScope <\/b>fonksiyon \u00e7a\u011fr\u0131s\u0131 yap\u0131lmal\u0131d\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=\"\">kernel.Bind&lt;IVeriDeposu>().To&lt;XmlDosyaVeriDesposu>().InRequestScope();<\/pre>\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;IGunlukDeposu>().To&lt;TextGunlukDeposu>().InRequestScope();<\/pre>\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;OgrenciIslemleri>().ToSelf().InRequestScope();<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Bu fonksiyonun Ninject.Web.Common Nuget paketi alt\u0131nda tan\u0131ml\u0131 olmas\u0131 nedeniyle \u00f6ncelik NuGet paketini y\u00fcklemelisiniz;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2014\/07\/Ninject.Web_.Common.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2014\/07\/Ninject.Web_.Common_thumb.png\" alt=\"Ninject.Web.Common NuGet paketi y\u00fcklenmesi\"\/><\/a><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Named, Call,Parent<\/h1>\n\n\n\n<p><em>&nbsp;&nbsp; ninject.extensions.namedscope<\/em> eklentisi taraf\u0131ndan sunulan named, call ve parent kapsamlar\u0131nda, nesne ba\u011fl\u0131 oldu\u011fu scope nesnesi .Net Garbage Collection taraf\u0131ndan topland\u0131\u011f\u0131nda ya da <em>Kernel.Release<\/em> \u00e7a\u011fr\u0131s\u0131 yap\u0131ld\u0131\u011f\u0131nda dispose edilecektir.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u00d6zel<\/h1>\n\n\n\n<p>&nbsp;&nbsp; Yukar\u0131da s\u0131ralanan ya\u015fam d\u00f6ng\u00fcs\u00fc kapsamlar\u0131 d\u0131\u015f\u0131nda geli\u015ftiricilerin uygulamalar\u0131na \u00f6zg\u00fc kendi ya\u015fam d\u00f6ng\u00fcs\u00fc kapsamlar\u0131n\u0131 tan\u0131mlayabilmelerine olanak vermektedir. \u00d6zel kapsam sayesinde geli\u015ftiriciler enjekte edilecek nesnelerin hangi s\u0131n\u0131rlar i\u00e7erisinde ya\u015fayabileceklerine karar verebilmekteler. \u00d6zel kapsam tan\u0131mlamas\u0131 i\u00e7in t\u00fcr ba\u011flamas\u0131nda <b>InScope <\/b>fonksiyon \u00e7a\u011fr\u0131s\u0131nda yap\u0131lmal\u0131d\u0131r. Bu yakla\u015f\u0131m temelde kapsam tan\u0131m\u0131 i\u00e7in a\u015fa\u011f\u0131daki \u015fekilde bir delegate kullan\u0131m\u0131na dayanmaktad\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=\"\">Func&lt;IContext, object> kapsam<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Ninject, belirtilen delegate\u2019ten ayn\u0131 nesne d\u00f6nd\u00fc\u011f\u00fc s\u00fcrece talep edilen t\u00fcr\u00fcn ayn\u0131 \u00f6rne\u011fi d\u00f6necektir. Olu\u015fturulan nesneler daha sonradan talep edilebilece\u011fi g\u00f6z \u00f6n\u00fcne al\u0131narak bir \u00f6nbellekte tutulacakt\u0131r. Delegate\u2019den d\u00f6nen nesnenin garbage collector taraf\u0131ndan toplanmas\u0131 ile birlikte \u00f6nbellekte tutulan bu nesneler serbest b\u0131rak\u0131larak silinecektir.<\/p>\n\n\n\n<p>&nbsp;&nbsp; \u00d6zel kapsam kullan\u0131l\u0131rken dikkat edilmesi baz\u0131 noktalar\u0131n alt\u0131n\u0131 \u00e7izmek gerekli;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li> InScope fonksiyonundan d\u00f6nen nesne, ba\u011flamas\u0131 yap\u0131lan t\u00fcrler i\u00e7in olu\u015fturulacak t\u00fcm nesnelerin ya\u015fam d\u00f6ng\u00fcs\u00fcnde belirleyici olacakt\u0131r. Bu sebeple, InScope fonksiyonundan d\u00f6nen nesne garbage collector taraf\u0131ndan toplanarak haf\u0131zadan at\u0131l\u0131rsa, Ninject bu nesne kapsam\u0131nda olu\u015fturulmu\u015f t\u00fcm nesne \u00f6rneklerini temizleyecektir (<em>IDisposable ise Dispose edecektir<\/em>). <\/li><li> Bir t\u00fcr i\u00e7in yap\u0131lan InScope \u00e7a\u011fr\u0131s\u0131ndan ayn\u0131 de\u011ferin d\u00f6nmesi durumunda Ninject bu t\u00fcr i\u00e7in yeni bir nesne olu\u015fturmak yerine daha \u00f6nceden olu\u015fturdu\u011fu nesneyi verecektir. <\/li><\/ul>\n\n\n\n<p>&nbsp;&nbsp; Request kapsam\u0131 i\u00e7in payla\u015ft\u0131\u011f\u0131m \u00f6rne\u011fi \u00f6zel kapsam tan\u0131m\u0131 ile a\u015fa\u011f\u0131daki \u015fekilde yeniden yazabilmeniz m\u00fcmk\u00fcn;<\/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;OgrenciIslemleri>().ToSelf().InScope(ctx => HttpContext.Current);<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Bu \u00f6rnekte Ninject \u00e7ekirde\u011finde her OgrenciIslemleri s\u0131n\u0131f\u0131 talebinde \u00e7ekirdek InScope fonksiyonuna ge\u00e7ilmi\u015f olan delegate\u2019i \u00e7a\u011f\u0131racakt\u0131r. Tan\u0131mlad\u0131\u011f\u0131m\u0131z delegate bir web request\u2019i boyunca her zaman ayn\u0131 HttpContext nesnesini d\u00f6nece\u011fi i\u00e7in Ninject \u00e7ekirde\u011fi OgrenciIslemleri s\u0131n\u0131f\u0131n\u0131 her bir web request\u2019i i\u00e7in sadece bir defa olu\u015fturacakt\u0131r. Web request\u2019in sonlanmas\u0131 ile birlikte HttpContext nesnesi\u2019de garbage collector taraf\u0131ndan toplanaca\u011f\u0131 i\u00e7in bu kapsamda olu\u015fturulmu\u015f t\u00fcm nesne \u00f6rnekleri de pasif olacakt\u0131r.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Ninject, ba\u011flama tan\u0131mlar\u0131 sayesinde olu\u015fturdu\u011fu nesnelerin ilgili kapsamlar\u0131 sonland\u0131\u011f\u0131nda etkin \u015fekilde temizlenmesi ad\u0131na <b>INotifyWhenDisposed<\/b> aray\u00fcz\u00fcn\u00fc tan\u0131mlam\u0131\u015ft\u0131r. InScope fonksiyonuna ge\u00e7ilen delegate\u2019in INotifyWhenDisposed aray\u00fcz\u00fcne sahip olmas\u0131 durumunda Ninject \u00e7ekirde\u011fi kapsam\u0131n sonland\u0131\u011f\u0131ndan daha etkin \u015fekilde haberdar olmas\u0131 nedeniyle olu\u015fturulmu\u015f nesnelerin daha etkin temizlenmesi yap\u0131labilecektir.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Thread kapsam\u0131 i\u00e7in payla\u015ft\u0131\u011f\u0131m \u00f6rne\u011fi \u00f6zel kapsam tan\u0131m\u0131 ile a\u015fa\u011f\u0131daki \u015fekilde yeniden yazabilmeniz m\u00fcmk\u00fcn;<\/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;OgrenciIslemleri>().ToSelf().InScope(ctx => System.Threading.Thread.CurrentThread);<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Transient kapsam\u0131 i\u00e7in payla\u015ft\u0131\u011f\u0131m \u00f6rne\u011fi \u00f6zel kapsam tan\u0131m\u0131 ile a\u015fa\u011f\u0131daki \u015fekilde yeniden yazabilmeniz m\u00fcmk\u00fcn;<\/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;OgrenciIslemleri>().ToSelf().InScope(ctx => null);<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Singleton kapsam\u0131 i\u00e7in payla\u015ft\u0131\u011f\u0131m \u00f6rne\u011fi \u00f6zel kapsam tan\u0131m\u0131 ile a\u015fa\u011f\u0131daki \u015fekilde yeniden yazabilmeniz m\u00fcmk\u00fcn;<\/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;OgrenciIslemleri>().ToSelf().InScope(ctx => ctx.Kernel)<\/pre>","protected":false},"excerpt":{"rendered":"<p>&nbsp;&nbsp; Dependecy Injection k\u00fct\u00fcphanelerini incelerken \u00f6ncelikle t\u00fcrleri nas\u0131l ele ald\u0131klar\u0131, nas\u0131l olu\u015fturduklar\u0131 konusuna e\u011fildik. Dependecy Injection k\u00fct\u00fcphaneleri bu g\u00f6revlerini yerine getirirken ka\u00e7\u0131n\u0131lmaz olarak olu\u015fturduklar\u0131 nesnelerin ne zaman yeni bir \u00f6rne\u011finin olu\u015fturulmas\u0131 gerekti\u011fine, ne zaman mevcut bir \u00f6rne\u011fini kullan\u0131lmas\u0131 gerekti\u011fine karar vermelidirler. Hatta bundan da \u00f6te; olu\u015fturulan nesne \u00f6rneklerinin ne zaman haf\u0131zadan at\u0131lmas\u0131 gerekti\u011fine de karar&#8230;<\/p>\n<p><a class=\"read-more\" href=\"https:\/\/fatihboy.com\/en\/ninject-yasam-dongusu-yonetimi\/\">Read More<\/a><\/p>","protected":false},"author":1,"featured_media":33494,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[77,28],"tags":[315,314],"class_list":["post-33493","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>Ninject \u2013 Ya\u015fam D\u00f6ng\u00fcs\u00fc Y\u00f6netimi - 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-yasam-dongusu-yonetimi\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ninject \u2013 Ya\u015fam D\u00f6ng\u00fcs\u00fc Y\u00f6netimi - Fatih Boy\" \/>\n<meta property=\"og:description\" content=\"&nbsp;&nbsp; Dependecy Injection k\u00fct\u00fcphanelerini incelerken \u00f6ncelikle t\u00fcrleri nas\u0131l ele ald\u0131klar\u0131, nas\u0131l olu\u015fturduklar\u0131 konusuna e\u011fildik. Dependecy Injection k\u00fct\u00fcphaneleri bu g\u00f6revlerini yerine getirirken ka\u00e7\u0131n\u0131lmaz olarak olu\u015fturduklar\u0131 nesnelerin ne zaman yeni bir \u00f6rne\u011finin olu\u015fturulmas\u0131 gerekti\u011fine, ne zaman mevcut bir \u00f6rne\u011fini kullan\u0131lmas\u0131 gerekti\u011fine karar vermelidirler. Hatta bundan da \u00f6te; olu\u015fturulan nesne \u00f6rneklerinin ne zaman haf\u0131zadan at\u0131lmas\u0131 gerekti\u011fine de karar...Read More\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihboy.com\/en\/ninject-yasam-dongusu-yonetimi\/\" \/>\n<meta property=\"og:site_name\" content=\"Fatih Boy\" \/>\n<meta property=\"article:published_time\" content=\"2014-07-30T12:34:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-06-17T18:01:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/save-world-recycle.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"1296\" \/>\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=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/\"},\"author\":{\"name\":\"Fatih Boy\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"headline\":\"Ninject \u2013 Ya\u015fam D\u00f6ng\u00fcs\u00fc Y\u00f6netimi\",\"datePublished\":\"2014-07-30T12:34:00+00:00\",\"dateModified\":\"2021-06-17T18:01:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/\"},\"wordCount\":1350,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/save-world-recycle.jpg\",\"keywords\":[\"Dependency Injection\",\"Ninject\"],\"articleSection\":[\"C#\",\"T\u00fcrk\u00e7e\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/\",\"url\":\"https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/\",\"name\":\"Ninject \u2013 Ya\u015fam D\u00f6ng\u00fcs\u00fc Y\u00f6netimi - Fatih Boy\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/save-world-recycle.jpg\",\"datePublished\":\"2014-07-30T12:34:00+00:00\",\"dateModified\":\"2021-06-17T18:01:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/#primaryimage\",\"url\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/save-world-recycle.jpg\",\"contentUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/save-world-recycle.jpg\",\"width\":1800,\"height\":1296},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fatihboy.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ninject \u2013 Ya\u015fam D\u00f6ng\u00fcs\u00fc Y\u00f6netimi\"}]},{\"@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":"Ninject \u2013 Ya\u015fam D\u00f6ng\u00fcs\u00fc Y\u00f6netimi - 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-yasam-dongusu-yonetimi\/","og_locale":"en_US","og_type":"article","og_title":"Ninject \u2013 Ya\u015fam D\u00f6ng\u00fcs\u00fc Y\u00f6netimi - Fatih Boy","og_description":"&nbsp;&nbsp; Dependecy Injection k\u00fct\u00fcphanelerini incelerken \u00f6ncelikle t\u00fcrleri nas\u0131l ele ald\u0131klar\u0131, nas\u0131l olu\u015fturduklar\u0131 konusuna e\u011fildik. Dependecy Injection k\u00fct\u00fcphaneleri bu g\u00f6revlerini yerine getirirken ka\u00e7\u0131n\u0131lmaz olarak olu\u015fturduklar\u0131 nesnelerin ne zaman yeni bir \u00f6rne\u011finin olu\u015fturulmas\u0131 gerekti\u011fine, ne zaman mevcut bir \u00f6rne\u011fini kullan\u0131lmas\u0131 gerekti\u011fine karar vermelidirler. Hatta bundan da \u00f6te; olu\u015fturulan nesne \u00f6rneklerinin ne zaman haf\u0131zadan at\u0131lmas\u0131 gerekti\u011fine de karar...Read More","og_url":"https:\/\/fatihboy.com\/en\/ninject-yasam-dongusu-yonetimi\/","og_site_name":"Fatih Boy","article_published_time":"2014-07-30T12:34:00+00:00","article_modified_time":"2021-06-17T18:01:49+00:00","og_image":[{"width":1800,"height":1296,"url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/save-world-recycle.jpg","type":"image\/jpeg"}],"author":"Fatih Boy","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Fatih Boy","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/#article","isPartOf":{"@id":"https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/"},"author":{"name":"Fatih Boy","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"headline":"Ninject \u2013 Ya\u015fam D\u00f6ng\u00fcs\u00fc Y\u00f6netimi","datePublished":"2014-07-30T12:34:00+00:00","dateModified":"2021-06-17T18:01:49+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/"},"wordCount":1350,"commentCount":0,"publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"image":{"@id":"https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/save-world-recycle.jpg","keywords":["Dependency Injection","Ninject"],"articleSection":["C#","T\u00fcrk\u00e7e"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/","url":"https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/","name":"Ninject \u2013 Ya\u015fam D\u00f6ng\u00fcs\u00fc Y\u00f6netimi - Fatih Boy","isPartOf":{"@id":"https:\/\/fatihboy.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/#primaryimage"},"image":{"@id":"https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/save-world-recycle.jpg","datePublished":"2014-07-30T12:34:00+00:00","dateModified":"2021-06-17T18:01:49+00:00","breadcrumb":{"@id":"https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/#primaryimage","url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/save-world-recycle.jpg","contentUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/save-world-recycle.jpg","width":1800,"height":1296},{"@type":"BreadcrumbList","@id":"https:\/\/fatihboy.com\/ninject-yasam-dongusu-yonetimi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fatihboy.com\/"},{"@type":"ListItem","position":2,"name":"Ninject \u2013 Ya\u015fam D\u00f6ng\u00fcs\u00fc Y\u00f6netimi"}]},{"@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\/33493","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=33493"}],"version-history":[{"count":1,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/33493\/revisions"}],"predecessor-version":[{"id":33495,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/33493\/revisions\/33495"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media\/33494"}],"wp:attachment":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media?parent=33493"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/categories?post=33493"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/tags?post=33493"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}