To get all Description Attributes of an Enum using C# or VB.NET you can use the snippet below.
Sample C# – Class
public class DescriptionAttributes<T>
{
protected List<DescriptionAttribute> Attributes = new List<DescriptionAttribute>();
public List<string> Descriptions { get; set; }
public DescriptionAttributes()
{
RetrieveAttributes();
Descriptions = Attributes.Select(x => x.Description).ToList();
}
private void RetrieveAttributes()
{
foreach (var attribute in typeof(T).GetMembers().SelectMany(member => member.GetCustomAttributes(typeof(DescriptionAttribute), true).Cast<DescriptionAttribute>()))
{
Attributes.Add(attribute);
}
}
}
Usage C#
class Program
{
public enum TestEnum
{
[Description("An apple a day keeps the doctor away")]
Apple=0,
[Description("Yummie Strawberry")]
Strawberry=1,
[Description("Banana for scale")]
Banana=2
}
static void Main(string[] args)
{
var descriptions = new DescriptionAttributes<TestEnum>().Descriptions.ToList();
foreach (var description in descriptions)
{
Console.WriteLine(description);
}
Console.Read();
}
}
Sample VB.NET – Class
Public Class DescriptionAttributes(Of T)
Protected Attributes As New List(Of DescriptionAttribute)()
Public Property Descriptions() As List(Of String)
Get
Return m_Descriptions
End Get
Set
m_Descriptions = Value
End Set
End Property
Private m_Descriptions As List(Of String)
Public Sub New()
RetrieveAttributes()
Descriptions = Attributes.[Select](Function(x) x.Description).ToList()
End Sub
Private Sub RetrieveAttributes()
For Each attribute As var In GetType(T).GetMembers().SelectMany(Function(member) member.GetCustomAttributes(GetType(DescriptionAttribute), True).Cast(Of DescriptionAttribute)())
Attributes.Add(attribute)
Next
End Sub
End Class
Usage VB.NET
Class Program
Public Enum TestEnum
<Description("An apple a day keeps the doctor away")> _
Apple = 0
<Description("Yummie Strawberry")> _
Strawberry = 1
<Description("Banana for scale")> _
Banana = 2
End Enum
Private Shared Sub Main(args As String())
Dim descriptions = New DescriptionAttributes(Of TestEnum)().Descriptions.ToList()
For Each description As var In descriptions
Console.WriteLine(description)
Next
Console.Read()
End Sub
End Class
Result / Output

Enum Descriptions