2013-10-25 34 views
0

我有一個基類Base和從此基類繼承的類Child。基類是IDisposableVisual Studio/Resharper:導航到重寫方法

我打電話給Child類的Dispose方法。有沒有辦法導航到Child的重寫實現?

Dim oChild as Child 
oChild.Dispose() 

當我同時具有選擇的Dispose()方法按F12,我在Base.Dispose()代替Child.Dispose()結束。請注意該聲明爲Child類型。

P.S .:我確實有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 
+1

這將有助於添加您的'Base'和'Child'類的代碼。我在VS2012中敲了一個簡單的C#示例(使用Resharper 8),並且F12鍵將我帶到了正確的位置。你有沒有在基類中虛擬Dispose'方法? –

+0

我已經添加了一個(VB)代碼示例。我最終使用了CBase的無參數Dispose方法。之前沒有注意到,所以「問題」是不同的。謝謝。 – urbanhusky

回答

0

是否有任何守則DER覆蓋的方法?

因爲通常如果你按F12你不起牀的基地。我認爲只有在重寫的方法中沒有別的東西時纔會這樣呢?

+1

是的,該方法被覆蓋。可能是因爲我的快捷方式或ReSharper搞砸了,但我已經重置了VS和Resharper。 – urbanhusky

+1

...實際上該方法沒有被覆蓋。我從'IDisposable'接口調用了無參數方法,但期望導航到'Disposable(Boolean)'方法。 – urbanhusky