代码之家  ›  专栏  ›  技术社区  ›  7wp

如何检测对象是否在“使用”范围内?

  •  3
  • 7wp  · 技术社区  · 15 年前

    请参阅我的示例代码:

    var testObject = new SomeClass();
    using (testObject)
    {
         //At this point how can the testObject implicitly know 
         //if it is placed inside a 'using' scope?
    
         // In other words, how can testObject know that
         // .SomeAction() is being called from within a 'using' scope?
    
         testObject.someAction();
    }
    
    3 回复  |  直到 15 年前
        1
  •  6
  •   Guffa    15 年前

    不可能。

    它可以得到一个堆栈转储来确定调用代码的位置,并分析代码来尝试确定它的功能。它可以寻找 try...finaly dispose using 块生成,但它仍然无法判断它是否真的是一个 使用

        2
  •  0
  •   Christian Hayter    15 年前

    你不能。反正也没什么区别。你所做的就是创建对象,调用一些方法,然后处理它。为什么我们应该 someAction 取决于是否 Dispose

        3
  •  0
  •   Juliet    15 年前

    我想构造一个 只能在以下情况调用它的方法 它位于“使用”范围内。

    你为什么

    如果您使用的是VS2010,那么就可以使用FxCop Dispose objects before losing scope 对于实现 IDisposable . 如果您创建了一个对象而没有对其进行处理,那么FxCop将使您的构建失败——这是一个编译器的保证,可以满足您的需求。