2015-12-09 104 views
0

我有不同的組件互相交互的中間件。我現在正在構建一個使用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被調用。

+1

通常很有可能通過DI傳遞現有的對象,大多數DI框架支持某種形式的對象生命週期管理選項。你在用什麼DI? –

+0

我已經看過Unity和Ninject,但是我從代碼示例中發現的所有內容都是爲接口分配一個類並使用構造函數注入,但示例創建了一個新的對象實例而不使用該引用,所以它不是我一直在尋找的東西對於。 –

+0

對於統一,你可以看看這裏:https://msdn.microsoft.com/en-us/library/ff660872%28v=pandp.20%29.aspx。對於Ninject他們被稱爲對象範圍在這裏看到:https://github.com/ninject/ninject/wiki/Object-Scopes –

回答

0

我想你在這裏走錯了路。您的API應該接收數據並將數據發送出去。它不應該引用任何東西或在這些引用上調用函數。爲您需要的數據調用API以更新您的本地引用,然後根據需要調用該對象上的函數。

+0

因爲它是一個使用WebAPI與第三方通信的中間件,所以我需要WebAPI使用POST來獲取數據,但是之後我需要能夠將數據沿鏈傳遞給中間件中的其他組件,然後才能發送響應。 –