簡體   English   中英

ASP.NET Web API依賴注入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM