2012-06-07 41 views
0

我創建了一個模塊,將一些Extension Methods添加到類中。 該類繼承自另一個父類。 在我的擴展方法的代碼中,我想使用MyBase引用基類。MyBase不能在擴展方法中使用?

這似乎並不被允許的(錯誤消息:「‘MyBase’不是一個模塊內有效」)

<Extension()> 
Public Function Get_OutOfSpace(val as ClassA) As Boolean 
    Return MyBase.IsOutOfSpace() 
End Function 

我如何可以調用內我的基類的方法擴展方法?

+0

您想訪問的方法的範圍是什麼? – Chriseyre2000

+0

該方法受保護。這是問題嗎? –

回答

1

這就是爲什麼他們強迫你在模塊中寫擴展方法,所以你不能犯的錯誤使用MyBase。但你的代碼至少還有一個其他的錯誤,你沒有擴展任何東西。擴展方法的第一個參數必須是對象的引用,該類型的要擴展:

<Extension()> 
Public Function Get_OutOfSpace(ByVal obj As Foo) As Boolean 
    ''... 
End Function 

那麼一個可能的實現是Return obj.IsOutOfSpace。這反過來使得您很可能實際上沒有任何用於此擴展方法的任何用途,因爲您要擴展的類已經具有IsOutOfSpace屬性。

只能使用擴展方法向類中添加方法。只有在不能更改課程時才這樣做。

+0

我將更正我的代碼。你是對的。 @chriseyre的評論也是正確的。我無法調用受保護的方法。 –