2012-08-17 83 views
1

我有一個類MyVisible有一個屬性Visible在VB.NET中實現屬性

我有一個類MySuperVisible實現一個接口ISuperVisible,也包含財產Visible

我應該如何在「MySuperVisible」類中實現「ISuperVisible」接口的「Visible」屬性?

Class MySuperVisible 
    Inherits MyVisible 
    Implements ISuperVisible 

... 

Private Property PrivatePropertyPlaceholder Implements ISuperVisible.Visible 
    Get 
    Return MyBase.Visible 
    End Get 
    Set 
    MyBase.Visible = value 
    End Set 
End Property 

是否正在實施私有財產唯一的解決方案呢?

PS。 MySuperVisible繼承MyVisible,所以我需要實現基類中已經存在的屬性。

+2

爲什麼你希望實現的私有財產?什麼是'MyBase.Visible'?我想你沒有給我們所有的信息。難道是'MySuperVisible'繼承自'MyVisible'並實現'ISuperVisible'? – 2012-08-17 13:07:07

+0

如果我理解正確,MyVisible中的'Visible'屬性與'ISuperVisible'實現'Visible'的需求相沖突。是對的嗎?如果是這樣,我相信Mike C是對的:如果我沒有弄錯,'Shadows'應該強制'MySuperVisible'中的實現覆蓋來自'MyVisible'的實現。 – Kjartan 2012-08-17 13:36:49

+0

是的,感謝Mike C完成這個問題。 MySuperVisible繼承MyVisible,所以我需要實現一個已經存在於基類中的屬性... – serhio 2012-08-17 13:38:10

回答

3

有趣的問題。我認爲關鍵字Shadows可能是適合您的方式。這使得事情變得比PrivatePropertyPlaceholder更加明確:

Public Shadows Property Visible As Boolean Implements ISuperVisible.Visible 
    Get 
     Return MyBase.Visible 
    End Get 
    Set(value As Boolean) 
     MyBase.Visible = value 
    End Set 
End Property 
+0

只是行'公共陰影屬性可見爲布爾實現ISuperVisible.Visible'嗎?需要我明確寫出所有的身體? – serhio 2012-08-17 13:40:57

+2

如果您在沒有屬性主體及其顯式集/從/到mybase的情況下對其進行投影,則不會設置基類可見屬性。 – Alex 2012-08-17 13:46:29