2011-10-12 87 views
0

理論上可以爲.NET創建一個RAII-Wrapper嗎?作爲一個很長時間的C++程序員,我不想再次自己管理對象的生命週期。 Dispose-Pattern是恕我直言,不過是一個壞笑話,與RAII的易用性相比,尤其是因爲它迫使用戶處理一個對象的實現細節(Dispose),並將該類變爲IDisplosable本身....NET的RAII-Wrapper?

+1

「我討厭再次自己管理對象一生」,你關心什麼? IDisplosable接口應該是極其罕見的情況。與RAII無法達到時相同的區域。 –

+0

即使最基本的計時器是IDisposable ... – MFH

+0

你在想什麼Timer類?許多類都是IDisposable,不一定意味着您需要爲它編寫清理代碼。 –

回答

1

Dispose僅適用於非託管資源。對於託管資源,由於垃圾回收器負責處理,所以您不得不做任何事情(並且甚至不允許您確定地釋放資源)。

那麼你究竟想要達到什麼目的?

+1

這不完全是真的,因爲即使是基本的定時器迫使你處理Dispose ...我創建一個基於插件的系統,因爲沒有自動處理IDisposable的方式,它似乎我必須使我的公共接口一次性我可能會泄露插件所獲得的資源 - 這些資源甚至可能不是我寫的。 – MFH

+0

@MFH你爲什麼把這個和RAII聯繫起來? –

+0

因爲在RAII中,我不必關心處置,只要對象超出範圍,就會完成處理。此外,由於RAII,類的消費者不必處理對象的清理。如果我編寫一個包含Timer的.NET類,該類必須可自行處置,並且必須處理該Timer,而使用RAII,我只包含Timer,並且只要我的對象超出範圍,它的析構函數就會自動調用哪些清理提供資源...... – MFH