0

lightinject の設定を別のクラスに書きました。

Global.ascx Application Start で私が持っている

 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);
4

1 に答える 1

0

あなたはそれを理解しました:) EnableMvc メソッドがこれを処理します。

詳細については、 http://www.lightinject.net/をご覧ください。

よろしくお願いします

ベルンハルト・リヒター

于 2014-05-10T07:19:06.063 に答える