Я хочу вставить контейнер для ввода в WebController.Зависимость от инъекции в контроллере веб-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 или MVC приложение, которое случается иметь контроллер API. – jpgrassi
Это проект MVC с API-контроллером. –