您可以創建這樣一個自定義屬性:
<AttributeUsage(AttributeTargets.Field)>
Public Class SomeAttribute
Inherits System.Attribute
Public Property SomeValue As String
End Class
然後創建您的枚舉,並與您的屬性裝飾領域:
Public Enum MyEnum
<Some(SomeValue:="Good One")>
Member1 = 1
<Some(SomeValue:="Bad One")>
Member2 = 2
<Some(SomeValue:="Good One")>
Member3 = 3
End Enum
並使用此查詢,得到你想要的,考試PLE 「好一個」 S
'Indented to be more readable step by step
Dim result As List(Of MyEnum) = _
GetType(MyEnum).GetFields() _
.Where(Function(field) _
field.GetCustomAttributes(True) _
.Cast(Of SomeAttribute) _
.Any(Function(attribute) attribute.SomeValue = "Good One")) _
.Select(Function(filtered) _
CType(filtered.GetValue(Nothing), MyEnum)) _
.ToList()
而結果將是:
'[枚舉] .GetValues()'工作在一個類型,所以它應該是'[枚舉。 GetValues(GetType(FilterEnum))'否則它就像你可能想要的那種聲音'.HasFlag' – Plutonix