gpt4 book ai didi

c# - 接口(interface)上的保守 IDisposable 标记

转载 作者:太空狗 更新时间:2023-10-30 01:03:56 24 4
gpt4 key购买 nike

在接口(interface)的实现可能也可能不需要需要被释放的情况下,要求所有实现必须被释放是个好主意吗? 将接口(interface)本身标记为 IDisposable

这会强制此接口(interface)的用户始终处理对象,即使对于某些实现来说可能是不必要的。目标显然是确保实现总是无缝交换。另一种方法是让用户自己决定,这看起来更正确,但更难沟通。另一方面,考虑到一个用户只有一个用接口(interface)类型声明的符号,要求无条件处理它似乎更正确。这种推理是否存在权衡或谬误?

如果问题过于依赖于具体情况,我想在(存储库设计模式的)教科书存储库的上下文中构建它,其中需要处理大多数已知的实现的。

最佳答案

If the question is too dependent on the situation, I'd like to frame it in the context of textbook repositories (of the repository design pattern), where most known implementations will need to be disposed of.

如果您正在编写实例化对象并负责其生命周期的库代码,那么理想场景将是处理 IDisposable,但不要要求它,除非压倒性地大多数实现都需要清理;例如,在您的代码处理完未知对象时使用 isas。它很少像这样简单,但例如:

IFoo obj = (IFoo)Activator.CreateInstance(unknownType);
using(obj as IDisposable)
{
// TODO: code
}

关于c# - 接口(interface)上的保守 IDisposable 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25565203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com