我知道要将字符串解析为特定的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
如下:
public Type ConvertStringToAnEnum(string value, Type anyType){
return (anyType)Enum.Parse(typeof(anyType), aValueString);
}
但我猜这不行......
如何制作解析在函数中指定为参数的任何枚举类型的函数?
就像我想拨打OtherEnumType result = ConvertStringToAnEnum("TEST1_", OtherEnumType)
答案 0 :(得分:6)
使通用方法通用:
public T ConvertStringToAnEnum<T>(string value){
return (T)Enum.Parse(typeof(T), value);
}
用法:
OtherEnumType result = ConvertStringToAnEnum<OtherEnumType>("TEST1_");
答案 1 :(得分: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>();
答案 2 :(得分:0)
根据您想要获得的参与方式,您还可以使用属性为枚举值提供更具描述性的名称。 Associating Strings with enums in C#为如何做到这一点提供了很好的介绍。