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