返回我的对象​​实现 IDisposable 的信息

kos*_*kov 1 c#

我有这门课

public class MyClient : IMyClient, IMyClientAsync,IDisposable
Run Code Online (Sandbox Code Playgroud)

我正在编写一个返回IMyClientAsync如下的包装器:

IMyClientAsync GetClient()
{
   return new MyClient ();
}
Run Code Online (Sandbox Code Playgroud)

但是,任何使用此包装器的人都无法在using块中关闭客户端using(var client = MyWrapper.GetClient()){},因为对象实现的信息IDisposable丢失了。

有什么办法可以改变它,以便仍然能够在一个using块中关闭我的客户端?

lee*_*e-m 8

接口可以从其他接口继承,因此不必同时MyClient继承IMyClientAsyncIDisposable,只需更改IMyClientAsync为从 继承IDisposable,如下所示:

public interface IMyClientAsync : IDisposable
{}

public class MyClient : IMyClient, IMyClientAsync
{}
Run Code Online (Sandbox Code Playgroud)

这样,代码的使用者就可以将 的实例包装IMyClientAsync在一个using块中,因为编译器知道它实现了IDisposable.