[英]ASP.NET Web API Dependency Injection
我想知道是否可以在ASP.NET Web API中進行依賴注入(自定義構造函數),而無需使用Unity或StructureMap等第三方庫,也無需使用Entity Framework。
我想要實現的是一個帶有構造函數的控制器,例如:
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)
{
// ...
}
// ...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.