我试着将代码缩小到这里,专注于我认为是缺失的部分。试图在程序中新建一个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是工厂的名称我正在尝试创建/使用/更新 –