Dot-Net

設計困境:誰來處理一次性參數?

  • June 26, 2011

如果我的類在它的建構子中使用一次性資源(DbConnection如果重要的話)我應該IDisposable在我的類中實現並處理DbConnection對象,還是讓使用者處理DbConnection

目前我在我的班級中實現了 IDisposable,但現在我看到了一些可能的負面影響:混亂的班級設計,DbConnection如果使用不當,雙重處置。但也有積極的一面:更簡單的使用是主要的(特別是如果你使用多個一次性參數)。

在“狂野”中,我看到了這兩種方法,所以我無法決定..

更新: 感謝大家的回答,事實上,這表明有時確實不是一個簡單的選擇。而且也很難選擇正確的答案。但是,我決定將來堅持使用最簡單的方法。所以最後的選擇是:不實現 IDisposable。

它應該由創建它的人處置 - 與創建它的範圍相同。你創建一個對象,你負責處理它。就那麼簡單。

在建構子中使用一次性資源是非最佳的,並且可能導致奇怪。相反,您應該將 aDbConnectionFactory注入能夠按需創建連接的建構子中,您可以使用它們並在方法內部處理它們。

如果由於某種原因,該模式對於您的場景不合邏輯。下一個最佳選擇是仍然將一次性資源的使用移出建構子,並讓一個方法返回一個新類型,該類型是一次性的並且可以滿足您的目的。

這類似於您的服務類型類返回需要從方法中處理的數據讀取器。(理論上它可能是一個真正的數據閱讀器)

引用自:https://stackoverflow.com/questions/6467687