在VS2010中,如何判断一个类需要处理?

时间:2011-11-28 21:28:26

标签: visual-studio idisposable

在Visual Studio 2010中,是否有一种简单的方法可以知道是否需要

e.g。我写代码:

Collection<Prize> prizes = new Collection<Prize>();

我不知道我是否需要调用dispose。

我现在处理它的方法是点击Collection然后按 F12 ,查找IDisposable

public class Collection<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable

然后我递归地下降到每个班级,看看是否有任何工具IDisposable

public class Collection<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable
   public interface IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable
      public interface ICollection<T> : IEnumerable<T>, IEnumerable
         public interface IEnumerable<T> : IEnumerable
            public interface IEnumerable    
         public interface IEnumerable
      public interface IEnumerable<T> : IEnumerable    
         public interface IEnumerable
      ...
  

注意:请勿将示例与问题混淆。我可能有代码:

 SqlConnection conn = new SqlConnection();
     

然后我重复迭代到祖先类型:

  public sealed class SqlConnection : DbConnection, ICloneable
      public abstract class DbConnection : Component, IDbConnection, IDisposable
     

所以我发现这堂课需要我打电话给Dispose。但如果我没有让F12进入东西

那就更容易了

1 个答案:

答案 0 :(得分:3)

如果您拥有高级版或终极版代码分析规则CA1001:Types that own disposable fields should be disposable,则会找到需要处理的类型。要启用代码分析,请转到项目属性并选择代码分析选项卡,选择“在构建时启用代码分析”,必须包含Microsoft.Design规则集才能运行CA1001规则。

来自Devexpress的Coderush包含类似的功能。这是标准版的唯一选择。可能还有其他加载项提供类似的功能。

这不能在快递版中完成。