我试图在这里缩小代码,专注于我认为缺少的部分。
这是" 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>();
然后在需要的地方通过构造函数注入。 因此,当我有一种方法将其注入时,我是否完全不想尝试新建存储库?我认为我不能用静态方法做到这一点。 请帮忙!
答案 0 :(得分:1)
你考虑过使用Ninject.Extensions.Factory吗?它似乎非常适合您的需求。 它是非常强大的工具,但基础非常简单,你可以浏览很棒的文档。
这里有一些开始使用的资源:
https://github.com/ninject/Ninject.Extensions.Factory/wiki/Factory-interface
http://www.planetgeek.ch/2011/12/31/ninject-extensions-factory-introduction/