试图在程序中创建一个ContextFactory> public static void Main

时间:2016-09-22 10:24:02

标签: c# .net ninject

我试图在这里缩小代码,专注于我认为缺少的部分。

这是" 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>();

然后在需要的地方通过构造函数注入。 因此,当我有一种方法将其注入时,我是否完全不想尝试新建存储库?我认为我不能用静态方法做到这一点。 请帮忙!

1 个答案:

答案 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/