枚举与常量的接口

时间:2015-02-25 11:16:51

标签: vb.net oop

更改枚举类型是一个很好的设计实践:

Public Enum EnumerationType
    EnumerationMember1
    EnumerationMember2
End Enum

到具有实现者类的接口库(即使它们是空的)?

Public Interface IEnumerationType
End Interface
Public Class EnumerationMember1 : Implements IEnumerationType
End Class
Public Class EnumerationMember2 : Implements IEnumerationType
End Class

出于可扩展性目的。

有任何缺点吗?在任何情况下,最好只使用枚举吗?

2 个答案:

答案 0 :(得分:0)

INTERFACES用于课程之间的合同 那是你有两个非相关的类共享一些方法

枚举类型存储特殊值。这些是命名常量。使用Enum,我们会在整个程序中替换魔术常量。 这提高了代码清晰度, 组织代码 并使代码更易于维护

出于可扩展性目的,最好使用接口,因为您将拥有方法属性,并且您可以稍后继承该类

Public Enum 

使用带有高级选项的枚举接口,那么缺点是什么?没有缺点:)

答案 1 :(得分:0)

并不完全清楚你所追求的是什么,但请看一下强类型的枚举模式。

''' <completionlist cref="EnumerationType"/>
Class EnumerationType

    Private Key As String

    Public Shared ReadOnly Member1 As EnumerationMember1 = New EnumerationMember1("EnumerationMember1")
    Public Shared ReadOnly Member2 As EnumerationMember2 = New EnumerationMember2("EnumerationMember2")

    Private Sub New(key as String)
        Me.Key = key
    End Sub

    Public Overrides Function ToString() As String
        Return Me.Key
    End Function
End Class

因此,当您使用它时,它看起来像一样

Sub Main

    DoSomething(EnumerationType.EnumerationMember1)
    DoSomething(EnumerationType.EnumerationMember2)

End Sub

Sub DoSomething(test As IEnumerationType)
    Console.WriteLine(test.ToString())
End Sub

但您可以轻松地为其添加功能(例如显式转换,或使用共享字典迭代所有成员的方式,或者您想到的任何内容)。

它是类型安全的,并且使用魔术completionlist注释将启用Intellisense支持。