2012-09-13 22 views
9

MVC4'e bağlamak istediğim MVC3 uygulamasına sahibim. Bağımlılık enjeksiyonu için Ninject kullanıyorum. Nuget kullanarak, benim projeye "Ninject" eklendi ve bu MVC3 için çalışıyorNinject ve asp.net MVC4

public class NinjectControllerFactory : DefaultControllerFactory 
{ 
    private IKernel ninjectKernel; 

    public NinjectControllerFactory() 
    { 
     ninjectKernel = new StandardKernel(); 
     AddBindings(); 
    } 

    protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType) 
    { 
     return controllerType == null ? null : (IController)ninjectKernel.Get(controllerType); 
    } 

    private void AddBindings() 
    { 
     //Add ninject bindings here 
    } 
} 

aşağıda gösterilen ama işler MVC4 değişti gibi bir kontrolör fabrikası yarattı. Biraz araştırma yaptık ve ancak sorun derlemek için yukarıdaki bağlantıda kodunu alma yaşıyorum

http://haacked.com/archive/2012/03/11/itrsquos-the-little-things-about-asp-net-mvc-4.aspx

MVC4

için çalışan Ninject nasıl açıklıyor bu bağlantıyı buldum. Özellikle, ben web.common dosyasının Başlat() yönteminde yerleştirmek gerekiyor kod bana çözülmemiş olan çözülmemiş ad hatalarını

GlobalConfiguration.Configuration.ServiceResolver 
    .SetResolver(DependencyResolver.Current.ToServiceResolver()); 

"ServiceResolver" ve ".SetResolver" Hem verir. Bunları etkinleştirmek için hangi referansları eklemem gerekir? Ayrıca, mümkünse bana nuget paketi ninject.mvc3 yüklemek zorunda kalmadan MVC4'te nasıl çalıştığını gösteren bir öğretici bana doğru işaret edebilir misiniz? Soruyorum çünkü uygulamada MVC3 için yazılan paketlerin herhangi bir paketinin kurulmasını tercih etmem.

düzenleme: Ben Görsel stüdyo 2012 kullanıyorum ve .Net 4.5

cevap

14

Phil makale WebAPI ile Ninject kullanma hakkında olduğunu ekledi olmalıdır. Demek istediğin bu mu? Normal MVC enjeksiyonu için bunu yapmanız gerekmez. Ayrıca, MVC4 ile Ninject.MVC3 NuGet paketini kullanmalısınız (evet, MVC3 yazdığını biliyorum, ama yine de gayet iyi çalışıyor çünkü NuGet, herşeyi Just Work yapan Assembly Version Yönlendirmelerini kuruyor), bu herşeyi ayarlıyor ve siz de yoksunuz. Bir kontrol ünitesine ihtiyaç var. Bağlamalarınızı eklemek için sadece NinjectWebCommon.cs dosyasını düzenleyin.

+1

Ben WebAPI ihtiyacım yok Nuget Şablonu'ndan "MVC3 için Ninject" "Ninject" değil yükleyin. Bağlantılarımı NinjectWebCommon.cs içinde nereye eklemeliyim? "Başlangıç" yönteminde? Ayrıca, uygulamamı bozan ninject.mvc3 paketindeki güncellemeler için herhangi bir potansiyel görüyor musunuz? Teşekkürler –

+0

@curiouspanda - Güncellemeler her zaman bir şeyleri kırabilir ve Ninject, bununla çalışmanın "tercih edilen" yolunu değiştiren birkaç yinelemeden geçmiştir, ancak genel olarak kod uyumlu kalmalıdır. WebAPI kullanmıyorsanız, Phil'in makalesi geçerli değildir. Eşlemelerinizi NinjectWebCommon.cs RegisterServices yönteminde kaydedersiniz –

0

Sadece basit Nuget şablonu yükledikten sonra namespace

Using Ninject; 

ekle ... U sadece