2015-11-24 28 views
0

我知道ClientBase<T>類明確實現了IDisposable接口,但我不明白爲什麼它明確地做了。 ClientBase doesn't implement IDisposable member爲什麼.NET BCL類ClientBase明確地實現IDispose

如果MyClientClientBase<T>派生我不能明確地Dispose的對象是這樣的:

MyClient client = new MyClient(); 
client.Dispose(); 

除非我投給底層接口或實現與using聲明設計模式的對象的生命週期:

((IDisposable)client).Dispose(); 

Microsoft通過expli隱藏了Dispose方法對這個類有什麼好處當他們可以公開它並允許開發者明確地調用它時,Cit接口的實現是什麼?

它不是彷彿類ClientBase<T>正在實施衝突的方法聲明兩個不同的接口,因此我認爲顯式接口實現在這種情況下不必要的,除非有什麼我已經錯過了..........

+0

這可能是誰實施'ClientBase '的設計選擇。一個廣泛的隱式與顯式接口實現可以[在這裏找到](http://stackoverflow.com/questions/143405/c-sharp-interfaces-implicit-implementation-versus-explicit-implementation)。 –

+0

(雖然我將這個問題標記爲重點關注不同課程的重複問題,但這是一個普遍的問題,接受的答案涵蓋了一般的設計原則)。 –

回答

0

這是爲什麼微軟實現這種方式,他們還建議我們做相同的情況下相同的原因。這意味着你應該調用public Close方法,它的行爲與Dispose完全一樣。

IDisposable

考慮提供方法Close(),除了Dispose()中,如果關閉是在該地區的標準術語。 這樣做時,使Close實現與Dispose相同並考慮顯式實現IDisposable.Dispose方法非常重要。

+0

對不起,我在回答時不知道重複。你可以取消標記。 –

相關問題