c# - 设计一个只有一些实现需要 IDisposable 的接口(interface)

标签 c# .net

<分区>

你正在设计一个接口(interface)IFoo

public interface IFoo
{
   void Bar();
}

假设这个接口(interface)有五个实现。其中两个实现还应实现 IDisposable,因为它们使用非托管资源。从调用者的角度来看,如果 IFoo 实现了 IDisposable 将是最简单的,这样任何 IFoo 都可以包装在 using 中 block ,但当然一些实现会随即散落着空的 Dispose() 方法。只是好奇还有其他方法可以做到这一点吗?

最佳答案

我怀疑我只是需要 IDisposable() - 一个空操作 Dispose() 不是一个大的开销。

如果你不能确定它是否是一次性的,下面的方法很有效:

var mightBeDisposable = GetBlah();
using(mightBeDisposable as IDisposable)
{
   // etc
}

关于c# - 设计一个只有一些实现需要 IDisposable 的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7242203/

相关文章:

c# - 如何遍历复选框列表并找到已选中和未选中的内容?

c# - 合并两个对象数据

c# - 在 C# 中将 Grid 的 IsMouseOver 设置为 True

c# - 如何确定 Dbcontexts 的范围(以防止整个应用程序的单例上下文)

c# - 如何替换字符串中每次出现的一组分隔符之间的任何特殊字符的所有实例?

c# - 如何使用 AutoMapper 将 Dto 映射到具有嵌套对象的现有对象实例?

c# - 将文件夹及其内容移动到其他文件夹

vb.net - VB 中的 LINQ InvalidCastException

c# - C#中如何替换两个字符之间的文本

c# - WPF将窗口拖动到桌面