在我的解决方案中,我有一个主项目,一个 WebUI 项目,还有一些支持子项目,例如 Domain 用于数据库访问,石英项目用于运行预定 Quartz 等工作
直到最近我才在主项目中成功使用 ninject ,但现在我还需要在其他项目中使用ninject。我是否可以在整个解决方案中共享依赖关系,这意味着从任何地方访问所有bean,或者我只能在单个项目中访问它们?
我尝试将它们注入新项目,但未找到绑定:
No matching bindings are available, and the type is not self-bindable.
是否可以在解决方案中包含多个ninject内核,假设每个内核只在单个Project中使用?或者有更好的方法吗?
答案 0 :(得分:3)
我认为Kernel
应该与应用程序入口点一对一。这是组合根,是定义Ninject内核的地方,以便它可以解析将为应用程序构建的完整对象图的类型。内核可以从NinjectModule实例的集合构造。您可以在模块中定义绑定。如果您有多个应用程序将使用您定义的类型层次结构,我将在程序集内部的自定义NinjectModules中创建绑定。然后,根据您的应用程序,您可以在创建内核时混合和匹配模块。这应有助于减轻每个应用程序中绑定的重复,并且它们将位于可重用的位置。
特别是在你的情况下我会:
答案 1 :(得分:1)
你可以,但要使它工作,你必须在每个可以运行的项目中创建内核和绑定。所以对于ex,如果你有一个web prj一个域逻辑prj一个控制台应用程序你必须在web和控制台内创建内核。这两个prj将引用域登录prj,然后共享。