And*_*est 22 c# inheritance coupling idisposable interface
班级名称已被更改以保护无辜者.
如果我有一个名为ISomeInterface的接口.我还有继承接口的类,FirstClass和SecondClass.FirstClass使用必须处理的资源.SecondClass没有.
所以问题是,我应该从IDisposable继承哪里?以下两个选项似乎都不太理想:
1)使FirstClass继承IDisposable.然后,任何处理ISomeInterfaces的代码都必须知道是否要处理它们.这闻起来像是与我紧密耦合.
2)使ISomeInterface继承IDisposable.然后,任何从它继承的类都必须实现IDisposable,即使没有任何东西可以处理.除了注释之外,Dispose方法基本上是空白的.
#2对我来说似乎是正确的选择,但我想知道是否有其他选择.
Mar*_*ell 20
如果抽象实体(接口或抽象类)有可能需要是一次性的,它应该实现它.Stream,例如本身不需要IDisposable,也不IEnumerator<T>......
抽象基类可能更简单,因为你可以有一个默认(空)实现,Dispose()然后可能是终结器/ Dispose(bool)模式,即
void IDisposable.Dispose() { Dispose(true); GC.SuppressFinalize(this); }
protected virtual void Dispose(bool disposing) {}
~BaseType() {Dispose(false);}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6381 次 |
| 最近记录: |