2010-09-23 6 views
3

J'ai une classe de base avec le enum et la propriété suivante:Surcharger énumérations et propriétés en 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 

Je voudrais créer une classe dérivée qui étend la ENUM, de sorte que les classes dérivées ENUM être:

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

Tout d'abord, comment puis-je faire cela - est-ce simplement en le surchargeant? Et d'autre part, ma propriété d'origine récupérera-t-elle automatiquement la nouvelle énumération lors de l'utilisation de la classe dérivée ou devrais-je la surcharger?

Toute aide grandement appréciée.

Merci

Sniffer

+0

Je ne pense pas que vous pouvez hériter ou surcharger une énumération. – Peter

Répondre

4

Il y a une façon d'hériter quelque chose qui fonctionne à peu près de la même manière comme ENUM. En ce qui concerne l'utilisation de votre code, il ressemble beaucoup à la même chose. L'astuce consiste à définir une classe avec des champs statiques/partagés plutôt que d'utiliser une énumération.

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 

La même syntaxe est utilisée lors de l'utilisation dans votre classe. Comme si:

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 

maintenant prolonger votre « ENUM » vous faites simplement ceci:

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

Vous pouvez maintenant accéder au ENUM dérivé avec toutes les valeurs d'origine ainsi que la nouvelle.

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

Nice. Merci de votre aide! – Sniffer