Нужно ли мне больше использовать расширение ninject.mvc? - PullRequest
1 голос
/ 01 апреля 2012

Я вижу, есть расширение для интеграции Ninject с asp.net-mvc, но похоже, что я могу интегрировать Ninject с mvc fine без этого расширения.Например:

public class NinjectDependencyResolver : IDependencyResolver
    {
        private readonly IResolutionRoot _resolutionRoot;

    public NinjectDependencyResolver(IResolutionRoot resolutionRoot)
    {
        _resolutionRoot = resolutionRoot;
    }

    public object GetService(Type serviceType)
    {
        return _resolutionRoot.TryGet(serviceType);
    }

    public IEnumerable<object> GetServices(Type serviceType)
    {
        return _resolutionRoot.GetAll(serviceType);
    }
}


public class MvcApplication : HttpApplication
{
    void Application_Start()
    {
        var modules = new INinjectModule[] { new ServiceModule() };
        var kernel = new StandardKernel(modules);

        DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));

Это какое-то устаревшее расширение или оно все еще актуально?Я вижу последние обновления исходного кода, поэтому я был немного смущен

1 Ответ

5 голосов
/ 01 апреля 2012

Вы можете реализовать свой собственный Respendency Resolver.Так что да, тебе это не нужно.Вы можете легко интегрировать Ninject без расширения.Но вопрос в том, почему вы должны это делать?Расширение Ninject.MVC3 предоставляет все, чтобы добавить поддержку Ninject без необходимости в реализации собственного средства разрешения зависимостей.Это имеет несколько преимуществ:

  1. В отличие от предлагаемой вами реализации, реализация этого расширения является правильной и доказала свою работоспособность во многих приложениях.
  2. Оно поддерживается вместе с ядром Ninject.В случае изменения ядра Ninject все необходимые изменения будут выполнены за вас.Например, ядро ​​Ninject 3.0.0 больше не имеет InRequestScope, но с Ninject.MVC3 у вас все еще есть эта область действия.
  3. Это расширение намного больше, чем средство разрешения зависимостей.Прочитайте документацию !
  4. Она работает в стороне от других веб-технологий, и ее конфигурацией можно поделиться.Например, веб-API MVC4, WCF, веб-формы
...