0

基本クラスBaseと、Childこの基本クラスから継承するクラスがあります。基本クラスはIDisposable.

クラスのDisposeメソッドを呼び出しています。Childのオーバーライドされた実装に移動する方法はありChildますか?

Dim oChild as Child
oChild.Dispose()

Dispose()メソッドを選択した状態で F12 を押すと、Base.Dispose()代わりに が表示されChild.Dispose()ます。宣言はChild型であることに注意してください。

PS: 私は ReSharper を持っているので、ReSharper を使った簡単な解決策があれば、それもうまくいくでしょう。

編集 (コード例):

Public Class CBase
  Implements IDisposable

  Private disposedValue As Boolean ' To detect redundant calls

  ' IDisposable
  Protected Overridable Sub Dispose(disposing As Boolean)
    If Not Me.disposedValue Then
      If disposing Then
        ' Disposing etc.
      End If
    End If
    Me.disposedValue = True
  End Sub

  Public Sub Dispose() Implements IDisposable.Dispose
    Dispose(True)
    GC.SuppressFinalize(Me)
  End Sub

End Class

Public Class CChild
  Inherits CBase

  Protected Overrides Sub Dispose(disposing As Boolean)
    Try
      If disposing Then
        ' Dispose child specific
      End If
    Finally
      MyBase.Dispose(disposing)
    End Try
  End Sub

End Class

Public Class CExample

  Public Sub ProvideExample()
    Dim oChild As New CChild
    oChild.Dispose() ' F12 on this leads me to CBase.Dispose
  End Sub

End Class
4

1 に答える 1

0

オーバーライドされたメソッドにコードはありますか?

通常、F12 を押すと、ベースに到達しないためです。オーバーライドされたメソッドに他に何もない場合のみだと思いますか?

于 2013-10-25T12:14:46.463 に答える