Проблема LightInject с DependencyResolver

Я написал конфигурацию для lightinject в отдельный класс.

В приложении Global.ascx запуск у меня есть

 AreaRegistration.RegisterAllAreas();
 RouteConfig.RegisterRoutes(RouteTable.Routes);
 var container = new ServiceContainer();
 DependencyResolver.SetResolver(new LightInjectDependencyResolver(container));

Мой класс LightInjectDependencyResolver выглядит так:

  public class LightInjectDependencyResolver : IDependencyResolver
  {
    private readonly ServiceContainer _serviceContainer;
    public LightInjectDependencyResolver(ServiceContainer serviceContainer)
    {
        _serviceContainer = serviceContainer;
        _serviceContainer.RegisterControllers();
        _serviceContainer.RegisterAssembly("mydll*.dll");
        _serviceContainer.EnableMvc();
    }

    public object GetService(Type serviceType)
    {
        return _serviceContainer.GetInstance(serviceType);
    }

    public IEnumerable<object> GetServices(Type serviceType)
    {
        return _serviceContainer.GetAllInstances(serviceType);
    }
}

Я получаю желтый экран смерти с ошибкой:

Не удается разрешить тип: System.Web.Mvc.IControllerFactory, имя службы:

РЕДАКТИРОВАТЬ

Я думаю, что я сортировал это, и в основном мне не нужен DependecnyReolver и похоже, что он делает это внутренне. Таким образом, вы все еще можете делать такие вещи, как:

IProductService a = DependencyResolver.Current.GetService<IProductService>();
a.GetById(1);

1 ответ

Вы поняли это:) Метод EnableMvc позаботится об этом.

Проверьте http://www.lightinject.net/ для получения дополнительной информации.

С наилучшими пожеланиями

Бернхард Рихтер

Другие вопросы по тегам