2010-09-23 71 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