2013-12-09 4 views
5

Ninject 3 ile bağlantı kurmaya çalıştığım bir MVC4/WebApi projem var. Belirli bir nesneyi istek kapsamı dahilindeki bir dizi varlıkla paylaşmak istiyorum ancak InRequestScope'un (https://stackoverflow.com/a/10592203/173225) bir çeşit uygulamasını sağlamanız gerektiğini anlıyorum. GitHub'daki kaynağa baktım ve sadece HttpContext.Current'u döndürüyor. Denedim:Ninja ve WebApi ile çalışan InRequestScope'u Kullanma

şanssız. Ayrıca, en son "kararsız" Nuget paketini https://groups.google.com/d/msg/ninject/rC2vhj8yvBU/NAIkNA-QrAAJ'da önerildiği gibi Ninject.Web.WebApi (# 9018) kullanmayı denedim, ancak aynı hatayı alıyorum (yöntem get_InRequestScope'un bir uygulaması yok).

GitHub kaynağına gelince, ilgili dosyaların son güncellemesinin yazıldığı sırada bir yıldan fazla bir süre önce 11 ay oldu, bu yüzden kararsız Nuget paketi ile geçerli olup olmadığını bilmiyorum. (özellikle Ninject için belgelerin durumu göz önüne alındığında).

Herhangi biri, bir nesnenin aynı örneğini istek kapsamı içinde birden fazla bileşene nasıl enjekte edileceğine dair düzgün bir çalışma örneği sağlayabilir mi?

Teşekkürler.

cevap

0

Nuget'ten veya başka bir yerden Ninject.Web.Common başvurusuna gereksiniminiz olacak ve InRequestScope yöntemini kullanmalısınız.

var messages = new List<string>(); 
    kernel.Bind<IList<string>>() 
     .ToMethod(x => messages) 
     .WhenMemberHas<ServiceResultMessagesAttribute>() 
     .InRequestScope(); 
+1

Cevabınız için teşekkürler. Muhtemelen bunu doğrulayamayacağım çünkü a) Çalışmaya çalıştığım özel örneği unuttum ve b) Uzun süredir ihtiyaç duyduğumuz özellikleri kolayca uygulayan Autofac'e geçtik. . Sorunu kanıtlayabildiğim bazı örnek kodları bulabilirsem, doğrulayabildiğim zaman bu cevabı kabul edeceğim. –