我刚刚开始在一个(大型)项目中使用 Ninject,并且只使用 DI 来启动其中的一部分。我有一个广泛使用构造函数注入组织的子系统。使用 Ninject 在这个子系统中注入所有类之间的依赖关系非常好。但是,我对子系统之外的东西有依赖关系,我真的很想使用 Ninject 来自动注入,但不负责它们的生命周期。
我认为Bind<T>.ToConstant(...)
会为我正在尝试做的事情工作。例如,我可能有一个 Monkey 类型的类作为单例,但我的应用程序的另一部分是在没有 Ninject 的情况下处理它的生命周期(例如,创建它并手动处理它)。创建配备 Ninject 的子系统后,我实例化一个内核,绑定我的子系统类,然后使用类似Bind<Monkey>.ToConstant(Monkey.Instance)
绑定到各种“外部”依赖项。这在激活时效果很好,但在我处理内核时不能按需要工作。我的子系统的生命周期可能比这些外部依赖项更短,但是当我在内核上调用 Dispose 时,所有这些依赖项都会被释放,这不是我想要的。虽然我可以看到两种方式的论点,但 Ninject 会自动处理一个它没有创建的对象似乎有点可疑。我希望至少有一种方法可以选择退出这种行为,但到目前为止我还没有找到任何东西。对此有任何支持吗?