Tyr*_*one 6 c# asp.net dependency-injection asp.net-web-api
我想知道是否可以在ASP.NET Web API中进行依赖注入(自定义构造函数),而无需使用Unity或StructureMap等第三方库,也无需使用Entity Framework.
我想要实现的是一个带有构造函数的控制器,例如:
public Controller(IDatabaseConnector connector) { ... }
Run Code Online (Sandbox Code Playgroud)
我知道对于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
}
}
Run Code Online (Sandbox Code Playgroud)
然后您应该替换以下中的默认激活器Global.asax:
protected void Application_Start()
{
// ...
GlobalConfiguration.Configuration.Services.Replace(
typeof(IHttpControllerActivator),
new CustomControllerActivator());
}
Run Code Online (Sandbox Code Playgroud)
现在您可以使用丰富的Controller构造函数:
public class UserController
{
public UserController(
IMapper mapper,
ILogger logger,
IUsersRepository usersRepository)
{
// ...
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6846 次 |
| 最近记录: |