创建另一个类使用的一次性

时间:2014-07-25 13:07:41

标签: c# code-analysis dispose

我有一个一次性的连接类

public class Connection : IDisposable { ... }

和一个依赖它的类

public class UsesConnection : IDisposable {
  UsesConnection (Connection c) {...}
  public void Dispose() {
    c.Dispose();
    ...
  }
  ...
}

如何在不收到UsesConnection错误的情况下创建并返回CA2000课程?

以下代码在CA2000

行上出现c = new Connection();错误
Connection c = null;
UsesConnection u = null;
try {
  c = new Connection()
  u = new UsesConnection(c);
  return u;
} catch {
  if (u != null) u.Dispose();
  else if (c != null) c.Dispose();
  throw;
}

1 个答案:

答案 0 :(得分:2)

改为使用using块。

using (var c = new Connection())
using (var u = new UsesConnection(c))
{
   // Do your work here
}

但不要return,因为这将处置两个对象。不要让UsesConnection处置Connection

你应该负责维护你的一次性参考文献的生命周期,而不是一些打电话者 - 问问自己"如果他们从未丢弃我的物品会怎么样?"