我有不同的組件互相交互的中間件。我現在正在構建一個使用OWIN和.NET WebAPI與第三方進行交互的自主Web API。我的問題是我需要傳遞一個對象引用到我的控制器,所以當通過GET或POST請求調用控制器時,它可以調用傳遞對象的函數。在這種情況下,依賴注入並不能幫助我,因爲我需要傳遞一個現有對象的引用,而不是創建一個新引用。Selfhost Web API參數傳遞
中的WebAPI在ExternalWebAPI類啓動功能創建:
public virtual void Start()
{
server = WebApp.Start<WebAPIStartup>(url: baseAddress);
UpdateStatus("Active","True");
}
現在我的控制器看起來是這樣的:
class TradesController:ApiController
{
TradeRequest PostTradeRequest(TradeRequest tradeRequest)
{
return tradeRequest;
}
}
我希望能夠做的是傳遞一個參考類的TradesController
使用this
因此從TradesController
我會打包呼叫ExternalWebAPI
功能。我研究了DI,但是我還沒找到一個好辦法,因爲通過啓動WebAPI的ExternalWebAPI
類的實例很重要,因爲它有其他方法和事件,必須在調用TradesController
' s PostTradeRequest
被調用。
通常很有可能通過DI傳遞現有的對象,大多數DI框架支持某種形式的對象生命週期管理選項。你在用什麼DI? –
我已經看過Unity和Ninject,但是我從代碼示例中發現的所有內容都是爲接口分配一個類並使用構造函數注入,但示例創建了一個新的對象實例而不使用該引用,所以它不是我一直在尋找的東西對於。 –
對於統一,你可以看看這裏:https://msdn.microsoft.com/en-us/library/ff660872%28v=pandp.20%29.aspx。對於Ninject他們被稱爲對象範圍在這裏看到:https://github.com/ninject/ninject/wiki/Object-Scopes –