考虑我有一个基本界面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
IDisposable
使用带有默认实现的基本抽象类(直到C#7添加默认接口实现)?
我不确定将来最容易使用和最清楚的是什么。似乎将潜在孩子可能被弃用到{{1}}中的所有界面都是一种可能令人烦恼的做法。此外,它需要具有空配置实现的基础,这似乎也不太理想。
答案 0 :(得分:1)
您必须检查该实例是否实现IDisposable
然后调用它。
例如:
foreach(var item in listOfClasses)
{
var disposableItem = item as IDisposable;
if(disposableItem != null)
disposableItem.Dispose();
....
}
是否需要创建一个单独的List,然后在构造对象时(或构建后)过滤掉列表?
这不是必要的。只需按照您最初说明的方式创建列表,并检查上面显示的一次性物品。
这有帮助吗?