我知道db.cloneCollection('localhost:27018', 'things_2');
var things2array = db.things2.find().toArray(); null;
db.things.insert(things2array,{ ordered : false });
类显式实现了ClientBase<T>
接口,但是我不明白为什么它是明确地完成的。
ClientBase doesn't implement IDisposable member
如果IDisposable
来自MyClient
我无法通过这种方式明确ClientBase<T>
:
Dispose
除非我使用MyClient client = new MyClient();
client.Dispose();
语句设计模式转换为底层接口或实现对象生存期:
using
当Microsoft将((IDisposable)client).Dispose();
方法公开并允许开发人员明确调用它时,通过显式接口实现隐藏Dispose
方法有什么好处?
它不像类ClientBase<T>
正在实现具有冲突方法声明的两个不同接口,因此我看到在这种情况下不需要显式接口实现,除非有我错过的东西........ ..
答案 0 :(得分:0)
在最初的几年或.NET中,由于可发现性,Close优先选择Dispose on streams。如果打开一个流,则认为更容易查找Close方法而不是Dispose。
答案 1 :(得分:0)
以下是Microsoft以这种方式实现它的原因,他们也建议我们在相同的情况下也这样做。这意味着你应该调用public Close方法,它的行为与Dispose完全相同。
CONSIDER提供方法Close(),除了Dispose()之外,如果close是该区域的标准术语。 这样做时,将Close实现与Dispose相同并考虑显式实现IDisposable.Dispose方法非常重要。