我試着將代碼縮小到這裏,專注於我認爲是缺失的部分。試圖在程序中新建一個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?我推測我不能用靜態方法做到這一點。 請幫忙!
4行 - 我離開它來演示預期的輸入參數 –
我不認爲我明白你的問題。如果您使用Ninject,則不必實例化(「新建」)存儲庫,它應該由Ninject自動注入,您只需告訴它在哪裏。請參閱:https://github.com/ninject/Ninject/wiki/How-Injection-Works – Shocked
當我嘗試注入它時,出現錯誤「非靜態字段需要對象引用,引用或屬性contextFactory「 contextFactory是工廠的名稱我正在嘗試創建/使用/更新 –