我有这门课
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块中关闭我的客户端?
接口可以从其他接口继承,因此不必同时MyClient继承IMyClientAsync和IDisposable,只需更改IMyClientAsync为从 继承IDisposable,如下所示:
public interface IMyClientAsync : IDisposable
{}
public class MyClient : IMyClient, IMyClientAsync
{}
Run Code Online (Sandbox Code Playgroud)
这样,代码的使用者就可以将 的实例包装IMyClientAsync在一个using块中,因为编译器知道它实现了IDisposable.
| 归档时间: |
|
| 查看次数: |
70 次 |
| 最近记录: |