【发布时间】:2017-06-07 09:06:19
【问题描述】:
假设我有一个基本接口IInterface。我必须要实现IInterface、ClassA 和ClassB 的类。
public interface IInterface
{
}
public class ClassA : IInterface
{
}
public class ClassB : IInterface, IDisposable
{
}
注意ClassB 是IDisposable 而ClassA 不是。现在,如果我想创建一个从工厂填充的List<IInterface>,我该如何处理一次性元素?是否有必要创建一个单独的List<IDisposable>,然后在构造对象时(或构造之后)过滤掉列表?我应该只使用 IInterface IDisposable 和带有默认实现的基本抽象类(直到 C#7 添加默认接口实现)?
我不确定将来最容易使用和最清晰阅读的内容是什么。似乎将所有潜在孩子可能被丢弃的界面都变成IDisposable 是一种潜在的恼人做法。此外,它还需要具有空 dispose 实现的基础,这似乎也不理想。
【问题讨论】:
-
是的,使 IInterface:IDisposable。我会放弃抽象基类并明确地实现它们。
-
这是 C# 中的一个 experessivity 问题,因此没有“理想”的答案。在具有类型类/特征的语言中,您可以在事后“附加”接口定义,这使得像这样的东西更干净。在 C# 中,我认为制作 IInterface:IDisposable 是最好的中间立场。
标签: c# idisposable