【发布时间】:2016-10-25 10:42:20
【问题描述】:
我有一个具有以下定义的类,我希望它具有 Dispose 方法的覆盖:
编辑
原来有一个 Dispose() 方法,但它不是一个覆盖。我期待一个覆盖。这可能是一个无效的问题......但为什么它不是一个覆盖?
public class MyClient : IMyClient2
{
public void Dispose()
{
Dispose(true);
}
private void Dispose(bool disposing)
{
if(disposing)
{
Stop();
}
}
}
它所扩展的接口,以及它的后续接口,定义为:
public interface IMyClient2 : IMyClient
{
// one or two methods
}
public interface IMyClient : IDisposable
{
// a bunch of methods
}
我认为实现 IDisposable 需要我的类具有 Dispose() 覆盖。但它没有,我不知道我需要做什么才能做到这一点。
我需要做什么才能正确处理我的类的实例?
【问题讨论】:
-
我不是很明白这个问题,你的意思是不用实现IDisposable.Dispose()就可以编译这段代码吗?那应该是不可能的。
-
使用上面显示的小代码
MyClient必须实现IDisposablesDispose方法。如果没有并且没有编译器错误,那么您还没有显示所有代码。 -
嗯,这绝对是可能的。这是我从 repo 中提取、构建并运行的代码。它运行良好。我以为我会使用方便的 IDisposable 实现来覆盖 IDispose 方法来解决我遇到的问题,但令我惊讶的是没有 Dispose 覆盖(ReSharper 告诉我)。
-
@DaveDev - 你确定这是层次结构吗?你能显示实际的课程吗?您是否有一些基类,而不仅仅是接口?
-
不,这是不可能的。您不能定义要在类型上实现的接口,然后不能在您的类型上实现/定义这些方法。代码不会编译。您还没有显示所有代码。
标签: c# idisposable