代码之家  ›  专栏  ›  技术社区  ›  zerkms

如何获取对象是否已经在inject中检索到

  •  2
  • zerkms  · 技术社区  · 14 年前

    ninject kernel ? 需要说明的是:

    假设我们有这个模块:

    Bind<IA>().To<A>();
    Bind<IB>().To<B>();
    

    还有一些“客户”代码:

    var a = kernel.Get<IA>();
    
    // how to get here "true" for assumption: "IA was requested (once)"
    // and "false" for: "IB was not requested ever"
    
    2 回复  |  直到 14 年前
        1
  •  1
  •   Ruben Bartelink    14 年前

    您可以在fluent绑定中使用.Before*和.After*来钩住对某个对象的调用,以将其标记为已使用。或者您可以查看IDisposable挂钩(请参阅源代码下载中的测试)。

    这里面有很好的背景资料 http://kohari.org/2009/03/06/cache-and-collect-lifecycle-management-in-ninject-20/