如何在类有多个成员时实现Dispose

Chr*_*web 0 .net vb.net idisposable

如何实现处理一个类,它有对象作为不实现IDisposable的成员?

请参考下面的例子来了解我的意思:

Public Class MyClass
    Implements IDisposable

    private emp as EmpClass
    private dept as DeptClass

    ' EmpClass and DeptClass doesn't implemented IDisposable interface. 

    ' IDisposable
    Protected Overridable Sub Dispose(disposing As Boolean)
       If Not Me.disposedValue Then
          If disposing Then
            emp = Nothing  ' --> Can't call Dispose method so I set to null
            dept = Nothing ' --> Can't call Dispose method so I set to null
          End If
       End If
      Me.disposedValue = True
    End Sub
End Class
Run Code Online (Sandbox Code Playgroud)

从上面看,所有都是托管对象,我可以做必要的更新.所以请建议那个代码好.

编辑

当我试图创建一个MyClass实例时,编译器给了我一个错误,我必须实现IDisposable.以下是我的通话代码.

Using ctx = MyFactory.CreateMyClass()
     'DO Something
End Using
Run Code Online (Sandbox Code Playgroud)

ne2*_*mar 5

来自MS:

此接口的主要用途是释放非托管资源.当不再使用该对象时,垃圾收集器会自动释放分配给托管对象的内存.但是,无法预测垃圾收集何时发生.此外,垃圾收集器不了解非托管资源,例如窗口句柄,或打开文件和流.

因此,如果您的类不使用流,文件或非托管对象,则无需调用Dispose或实现IDisposable.可以处置的其他事情是删除不再需要的听众