2010-09-23 87 views
3

我与以下枚举和财产基类:重载枚举和属性在VB.NET

Public Enum InitType 
     Focus = 0 
     Help = 1 
     ErrorToolTip = 2 
    End Enum 

    Property ToolTipInitType() As InitType 
     Get 
      Return m_initType 
     End Get 
     Set(ByVal value As InitType) 
      m_initType = value 
     End Set 
    End Property 

我想创建延伸枚举派生类,所以派生类会枚举是:

Public Enum InitType 
     Focus = 0 
     Help = 1 
     ErrorToolTip = 2 
     HelpPopUp = 3 
    End Enum 

首先,我该如何做到这一点 - 它是通过简单地重载它吗?其次,当我使用派生类时,我的原始属性会自动获取新的枚举值,还是需要重载?

任何帮助非常感谢。

感谢

嗅探器

+0

我不认为你可以继承或重载枚举。 – Peter 2010-09-23 10:42:35

回答

4

有一种方式来继承的东西,几乎相同的方式工作作为一个枚举。至于你的代码使用情况,它看起来几乎相同。诀窍是定义一个静态/共享字段的类,而不是使用枚举。

Public Class InitType 
    Protected Sub New() 
    End Sub 
    Public Shared ReadOnly Focus As New InitType() 
    Public Shared ReadOnly Help As New InitType() 
    Public Shared ReadOnly ErrorToolTip As New InitType() 
End Class 

在班上使用它时,它的语法相同。像这样:

Public Class ExtendingEnums 
    Private m_initType As InitType = InitType.Focus 
    Property ToolTipInitType() As InitType 
     Get 
      Return m_initType 
     End Get 
     Set(ByVal value As InitType) 
      m_initType = value 
     End Set 
    End Property 
End Class 

现在延长你的“枚举”你只需做到这一点:

Public Class InitTypeEx 
    Inherits InitType 
    Public Shared ReadOnly HelpPopUp As New InitType() 
End Class 

现在你可以用所有的原始值加上新的访问派生枚举。

Public Sub Execute() 
    Dim ee As New ExtendingEnums() 
    ee.ToolTipInitType = InitType.Help 
    ee.ToolTipInitType = InitTypeEx.HelpPopUp 
    ee.ToolTipInitType = InitTypeEx.Focus 
End Sub 
+0

不错的一个。谢谢你的帮助! – Sniffer 2010-09-24 12:47:27