sharee.bike-App/SharedBusinessLogic/Model/EnumExtensions.cs
2024-04-09 12:53:23 +02:00

34 lines
871 B
C#

using System;
using System.ComponentModel.DataAnnotations;
using System.Reflection;
namespace ShareeBike.Model
{
public static class EnumExtensions
{
public static string GetDisplayName(this Enum enu)
{
var attr = GetDisplayAttribute(enu);
return attr != null ? attr.Name : enu.ToString();
}
public static string GetDescription(this Enum enu)
{
var attr = GetDisplayAttribute(enu);
return attr != null ? attr.Description : enu.ToString();
}
private static DisplayAttribute GetDisplayAttribute(object value)
{
Type type = value?.GetType() ?? typeof(object);
if (!type.IsEnum)
{
throw new ArgumentException(string.Format("Type {0} is not an enum", type));
}
// Get the enum field.
var field = type.GetField(value.ToString());
return field == null ? null : field.GetCustomAttribute<DisplayAttribute>();
}
}
}