2

我知道要将字符串解析为特定enum的:

enum AnEnumType 
{
   TEST_,
   OTHER_TEST_,
   OTHERS_
}

enum OtherEnumType 
{
   TEST1_,
   OTHER_TEST1_,
   OTHERS1_
}


string aValueString = "TEST_";

AnEnumType result = (AnEnumType)Enum.Parse(typeof(AnEnumType), aValueString);

所以,我想创建一个函数,一个通用的函数,它为我的enum(s)使用解析器,例如:

public Type ConvertStringToAnEnum(string value, Type anyType){

return (anyType)Enum.Parse(typeof(anyType), aValueString);
}

但我觉得这样不行……

如何制作解析函数中指定为参数的任何枚举类型的函数?

就像我想打电话一样OtherEnumType result = ConvertStringToAnEnum("TEST1_", OtherEnumType)

4

3 回答 3

6

使泛型方法泛型:

public T ConvertStringToAnEnum<T>(string value){
  return (T)Enum.Parse(typeof(T), value);
}

用法:

OtherEnumType result = ConvertStringToAnEnum<OtherEnumType>("TEST1_");
于 2012-06-11T12:35:10.130 回答
2

你可以尝试使用

public T ConvertStringToAnEnum<T>(string value)
{
    return (T)Enum.Parse(typeof(T), value);
}

有了这个你可以做
OtherEnumType tp2 = ConvertStringToAnEnum<OtherEnumType>("TEST1_");

或使用扩展方法

public static class Extensions
{
    public static T ToEnum<T>(this string value)
    {
        return (T)Enum.Parse(typeof(T), value);
    }
}

有了这个你可以做

OtherEnumType tp2 = "TEST1_".ToEnum<OtherEnumType>();
于 2012-06-11T12:35:39.823 回答
0

根据您想要获得的参与程度,您还可以使用属性为您的枚举值提供更具描述性的名称。在 C# 中将字符串与枚举相关联对如何执行此操作提供了很好的介绍。

于 2012-06-11T12:42:11.113 回答