实施 ID时要考虑的任何风险是可控的

本文关键字:任何风 ID 实施 | 更新日期: 2023-09-27 18:31:57

我想创建一个在using()语句中调用存储库类的方法。该类当前不是一次性的。在使其实现 IDisposable 之前,我应该考虑什么吗?

using(var repo = new RespositoryClass() )
{
   //do work
}

实施 ID时要考虑的任何风险是可控的

如果类使用非托管资源或初始化实现它的其他成员,则应实现IDisposable。否则,如果您不需要它,请不要使用它。

仅仅因为在类中使用IDisposable对象并不意味着该类需要实现 IDisposable。

下面的示例类不需要实现IDisposable

class NotDisposable
{
  public void someMethod()
  {
    using(SomethingDisposable resource = new SomethingDisposable ())
    {...}
  }
}

下面是一个需要实现IDisposable的类的示例

class SomethingToDispose : IDisposable
{
  private SomethingDisposable resource = new SomethingDisposable();
  public void someMethod()
  {
    //code that uses resource 
  }
  //code to dispose of "resource" in a Dispose method.
}

正如您在第二个示例中所看到的,类实际上没有任何地方放置using语句来释放资源。 由于它将一次性物品存储在田间,并且是负责处理它的人,因此确保它被处置的最佳方法是实施IDisposable