7
我有一個實現IDisposable的類,因爲它有一個IDisposable(在構造函數中初始化)的私有成員字段「foo」。我意外地得到了一個CA2000代碼分析錯誤,該錯誤要求我確定要處置foo。但是,我在我的類的Dispose()代碼中有foo.Dispose(),應該處理這個問題。爲什麼我在IDisposable類中使用私有成員IDisposable獲取CA2000?
我做了一些搜索,驚奇地找不到答案。我究竟做錯了什麼?顯然我缺少一些基本的東西。我如何編寫我的代碼來克服這個問題?
我的VB代碼:
Public Class Bar
Implements IDisposable
Private Foo As SomeDisposableThing
Public Sub New()
Foo = New SomeDisposableThing() With {.name = "hello"}
End Sub
'''' snip ''''
Private disposedValue As Boolean = False ' To detect redundant calls '
Protected Overridable Sub Dispose(ByVal disposing As Boolean)
If Not Me.disposedValue Then
If disposing Then
If Foo IsNot Nothing Then Foo.Dispose()
End If
End If
Me.disposedValue = True
End Sub
Public Sub Dispose() Implements IDisposable.Dispose
Dispose(True)
GC.SuppressFinalize(Me)
End Sub
End Class
呸。消息:不要使用屬性:( – 2011-01-12 00:28:20