我想知道是否可以在 ASP.NET Web API 中进行依赖项注入(自定义构造函数),而无需使用第三方库(例如 Unity 或 StructureMap)且无需实体框架。
我想要实现的是拥有一个带有构造函数的控制器,例如:
public Controller(IDatabaseConnector connector) { ... }
我知道对于 MVC,您可以通过继承 DefaultControllerFactory 然后重写 GetControllerInstance 函数来创建自定义 ControllerFactory。所以我确信 Web API 有一个替代方案。
首先你应该定义自己的IHttpControllerActivator
:
public class CustomControllerActivator : IHttpControllerActivator
{
public IHttpController Create(
HttpRequestMessage request,
HttpControllerDescriptor controllerDescriptor,
Type controllerType)
{
// Your logic to return an IHttpController
// You can use a DI Container or you custom logic
}
}
然后你应该替换默认的激活器Global.asax
:
protected void Application_Start()
{
// ...
GlobalConfiguration.Configuration.Services.Replace(
typeof(IHttpControllerActivator),
new CustomControllerActivator());
}
现在你可以用你的财富Controller
构造函数:
public class UserController
{
public UserController(
IMapper mapper,
ILogger logger,
IUsersRepository usersRepository)
{
// ...
}
// ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)