枚举实用工具库

26 浏览
0 Comments

枚举实用工具库

我正在寻找一个在.Net中处理枚举类型的开源库或示例。除了人们常用的Enum扩展(TypeParse等),我还需要一种方法来执行操作,比如返回给定枚举值的Description属性的值,或者返回一个具有匹配给定字符串的Description属性值的枚举值。

例如:

//如果是扩展方法
var race = Race.FromDescription("AA") // 返回Race.AfricanAmerican
//并且
string raceDescription = Race.AfricanAmerican.GetDescription() // 返回"AA"

0
0 Comments

(Enumeration Utility Library)是一个问题解决方案,它的出现是由于在处理枚举类型时需要使用一些常用的方法,但是这些方法并没有一个统一的库来提供。为了解决这个问题,可以创建一个自己的库,将各种方法整合到其中。

这个库可以从Stackoverflow等网站上找到其他答案中的方法,并将它们整合到一个项目中。下面是一些可以开始的方法示例:

1. 获取枚举描述信息:

public static string GetDescription(this Enum value)
{
    FieldInfo field = value.GetType().GetField(value.ToString());
    object[] attribs = field.GetCustomAttributes(typeof(DescriptionAttribute), true));
    if(attribs.Length > 0)
    {
        return ((DescriptionAttribute)attribs[0]).Description;
    }
    return string.Empty;
}

2. 从字符串中获取可空的枚举值:

public static class EnumUtils
{
    public static Nullable Parse(string input) where T : struct
    {
        //since we cant do a generic type constraint
        if (!typeof(T).IsEnum)
        {
            throw new ArgumentException("Generic Type 'T' must be an Enum");
        }
        if (!string.IsNullOrEmpty(input))
        {
            if (Enum.GetNames(typeof(T)).Any(
                  e => e.Trim().ToUpperInvariant() == input.Trim().ToUpperInvariant()))
            {
                return (T)Enum.Parse(typeof(T), input, true);
            }
        }
        return null;
    }
}

通过创建这个枚举工具库,可以更方便地处理枚举类型,并且可以避免重复编写相同的代码。这样,开发人员可以在项目中直接引用这个库,并使用其中提供的方法来处理枚举相关的操作。这种方式提高了代码的可读性和可维护性,同时也提升了开发效率。

,(Enumeration Utility Library)的出现是为了解决在处理枚举类型时需要使用一些常用方法的问题。通过创建一个统一的库来整合这些方法,可以提高代码的可读性和可维护性,同时也提升开发效率。

0
0 Comments

枚举(Enumeration)是一种常见的数据类型,用于定义一组相关的常量。然而,在某些情况下,枚举可能存在一些限制,例如缺乏一些常见的操作,如相等性比较、解析、比较等。为了解决这些问题,有人提出了使用类(Class)替代枚举的方法。

在这篇博文中,作者提出了一个使用抽象类作为枚举类基础的解决方案,并在基类中添加了相等性比较、解析、比较等功能。通过这种方法,可以创建类似于以下示例的枚举类:

public class EmployeeType : Enumeration
{
    public static readonly EmployeeType Manager 
        = new EmployeeType(0, "Manager");
    public static readonly EmployeeType Servant 
        = new EmployeeType(1, "Servant");
    public static readonly EmployeeType AssistantToTheRegionalManager 
        = new EmployeeType(2, "Assistant to the Regional Manager");
    private EmployeeType() { }
    private EmployeeType(int value, string displayName) : base(value, displayName) { }
}

通过以上代码,我们可以看到,使用抽象类作为枚举类的基类,可以为枚举类提供更多的功能和灵活性。

这篇博文的作者提出的解决方案对于我目前的情况非常有帮助,感谢 quip 的分享。

0