已更改类名以保护无辜者。
如果我有一个名为 ISomeInterface 的接口(interface)。我还有继承接口(interface)的类,FirstClass 和 SecondClass。 FirstClass 使用必须处理的资源。 SecondClass 没有。
那么问题来了,我应该从哪里继承IDisposable呢?以下两个选项似乎都不太理想:
1) 让FirstClass继承IDisposable。然后,任何处理 ISomeInterfaces 的代码都必须知道是否要释放它们。这对我来说就像紧密耦合。
2) 使 ISomeInterface 继承 IDisposable。然后,任何继承自它的类都必须实现 IDisposable,即使没有可处置的东西。除评论外,Dispose 方法基本上是空白的。
#2 对我来说似乎是正确的选择,但我想知道是否有其他选择。
最佳答案
如果抽象实体(接口(interface)或抽象类)可能有合理的机会需要一次性使用,则应该实现它。 Stream
,例如自身不需要IDisposable
,IEnumerator<T>
也没有...
抽象基类可能更简单,因为您可以拥有 Dispose()
的默认(空)实现然后,可能还有终结器/Dispose(bool) 模式,即
~BaseType() => Dispose(false);
protected virtual void Dispose(bool disposing)
{
}
void IDisposable.Dispose()
{
Dispose(true); GC.SuppressFinalize(this);
}
关于c# - 我应该如何继承IDisposable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1834263/