gpt4 book ai didi

c# - NInject:您在哪里保存对内核的引用?

转载 作者:IT王子 更新时间:2023-10-29 03:51:18 26 4
gpt4 key购买 nike

我在一个新的网络应用程序上使用 NInject,有两件事我不清楚:

  1. 我不需要保留对内核(Session/App 变量)的引用以确保 GC 不会收集我的所有实例吗?例如,如果我指定 .Using() 然后 Kernel 对象被收集,那么我所有的“单例”是不是也被收集了?

  2. 如果我确实需要保留对 Kernel 对象的引用,我该如何允许传递给 WithArguments() 的参数发生变化,或者这是不可能的。

最佳答案

您确实不想绕过内核。通常,在 Web 应用程序中,我将内核存储在 HttpApplication 的静态属性中。如果您需要对内核的引用,您只需公开一个类型为 IKernel 的依赖项(通过构造函数参数或属性),Ninject 将为您提供对激活该类型的内核的引用。

如果您在绑定(bind)上使用 WithArguments(),它们将用于所有激活。如果您使用 IParameters,它们将仅用于该激活。 (但是,如果您激活的服务具有像 Singleton 这样的可重用行为,即使您传递不同的 IP 参数,它也不会被重新激活。)

关于c# - NInject:您在哪里保存对内核的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/590900/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com