【发布时间】:2017-06-23 05:59:05
【问题描述】:
我指示 Ninject 在接口上创建工厂:
this.Bind<IModelFactory>().ToFactory().InSingletonScope();
在这个工厂接口中,我定义了工厂:
interface IModelFactory
{
MyClass CreateMyClassFactory(string param1, DateTime param2);
}
然后我尝试使用工厂创建一个新类:
Class myClass = modelFactory.CreateMyClassFactory(param1, new DateTime(2017,01,01);
...但它抛出了这个异常:
抛出异常:Ninject.dll 中的“Ninject.ActivationException”
附加信息:激活字符串时出错
没有匹配的绑定可用,并且类型不是自绑定的。
激活路径:
2) 将依赖字符串注入MyClass类型的构造函数的参数标题中
1) 请求 HedgeOrderMyClass
建议:
1) 确保您已为字符串定义绑定。
2) 如果绑定是在模块中定义的,请确保该模块已加载到内核中。
3) 确保您没有意外创建多个内核。
4) 如果您使用构造函数参数,请确保参数名称与构造函数参数名称匹配。
5) 如果您使用自动模块加载,请确保搜索路径和过滤器正确。
【问题讨论】:
-
首先防止工厂抽象,如here 详细解释。
标签: c# ninject factory-pattern