2016-09-22 50 views
0

我試着將代碼縮小到這裏,專注於我認爲是缺失的部分。試圖在程序中新建一個ContextFactory> public static void Main

這是控制檯應用程序的「public static void Main(string [] args)」方法。

由於它是靜態的,我必須新建creditService並注入存儲庫。

我只是無法弄清楚如何創建financeRepository「IContextFactory < IFinanceContext> contextFactory」 - 我已經在下面的代碼中留下了預期的輸入簽名來解釋。

我一直在這個圈子裏繞了幾天。

public static void Main(string[] args) 
{ 
    IFinanceContext financeContext = new FinanceContext(); 
    IFinanceRepository financeRepository = financeContext(IContextFactory<IFinanceContext> contextFactory); 

    ICreditService creditService = new CreditService(financeRepository); 
    CreditHandler _creditHandler = new CreditHandler(creditService); 

    _creditHandler.Handle(); 
} 

在亞洲其他的解決方案,在另一個項目,Ninject自舉這樣的:

kernel.Bind<IContextFactory<IFinanceContext>>().ToFactory(); 
kernel.Bind<IFinanceContext>().To<FinanceContext>(); 

然後在需要的地方它是通過構造注射英寸 那麼我有沒有辦法在注入時嘗試新建Repository?我推測我不能用靜態方法做到這一點。 請幫忙!

+0

4行 - 我離開它來演示預期的輸入參數 –

+0

我不認爲我明白你的問題。如果您使用Ninject,則不必實例化(「新建」)存儲庫,它應該由Ninject自動注入,您只需告訴它在哪裏。請參閱:https://github.com/ninject/Ninject/wiki/How-Injection-Works – Shocked

+0

當我嘗試注入它時,出現錯誤「非靜態字段需要對象引用,引用或屬性contextFactory「 contextFactory是工廠的名稱我正在嘗試創建/使用/更新 –

回答

相關問題