0
我想注入統一容器到WebController。注入依賴到Web API控制器
我有UnityDependencyResolver:
public class UnityDependencyResolver : IDependencyResolver
{
readonly IUnityContainer _container;
public UnityDependencyResolver(IUnityContainer container)
{
this._container = container;
}
public object GetService(Type serviceType)
{
try
{
return _container.Resolve(serviceType);
}
catch
{
return null;
}
}
public IEnumerable<object> GetServices(Type serviceType)
{
try
{
return _container.ResolveAll(serviceType);
}
catch
{
return new List<object>();
}
}
public void Dispose()
{
_container.Dispose();
}
}
然後,在我的Global.asax我添加以下行:
var container = new UnityContainer();
container.RegisterType<IService, Service>
(new PerThreadLifetimeManager()).RegisterType<IDALContext, DALContext>();
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
然後,如果我使用的網絡控制器執行以下操作:
private IService _service;
public HomeController(IService srv)
{
_service = srv;
}
它工作正常。
但我想它注入到的WebAPI控制器,所以如果我做同樣的方式:
private IService _service;
public ValuesController(IService srv)
{
_service = srv;
}
它不工作,它說,構造函數沒有定義。 好吧,我再創建一個構造函數:
public ValuesController(){}
而且在這種情況下,僅使用此構造,從來沒有一個地方我應該團結注入容器。
請指教。
這是一個的WebAPI項目或恰好有一個API控制器MVC應用程序。 – jpgrassi
這是一個具有API控制器的MVC項目。 –