2012-08-17 120 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