【发布时间】:2015-06-02 14:55:58
【问题描述】:
我正在尝试创建一个帮助函数,该函数返回任何类型的枚举的枚举名称,来自:https://msdn.microsoft.com/en-us/library/system.enum.getname%28v=vs.110%29.aspx
我遇到了这个错误:
错误 1 找不到类型或命名空间名称“enumType”(是 您缺少 using 指令或程序集引用?)
从此函数:
public static string EnumNameToString<T>( T enumType , T enumActual)
{
return Enum.GetName( typeof( enumType ), enumActual );
}
此行出错:
return Enum.GetName( typeof( enumType ), enumActual );
我快速搜索了一下,但似乎只发现重命名项目等的人收到此错误,而不是在我看来使用泛型。
提前致谢:)
编辑:
enum eEnumType
{
eEnum0,
eEnum1,
eEnum2
}
enum eEnumType2
{
e_Enum0,
e_Enum1,
e_Enum2
}
eEnumType anEnum;
eEnumType2 anEnum2;
string exampleStr = EnumNameToString<string>( eEnumType, eEnum0 );
string exampleStr2 = EnumNameToString<string>( eEnumType2, e_Enum2 );
期望 exampleStr 为“eEnum0”。 期望 exampleStr2 为“e_Enum2”。
(对泛型来说是新手,所以这可能仍然很离谱,但希望能深入了解我正在尝试实现的目标)。
再次感谢。
【问题讨论】:
-
你的函数做了定义中不清楚的事情你能展示这个方法的示例用法
-
typeof想要一个类型,但你给它一个变量(T是一个类型) -
我想传入一个枚举类型,即有许多枚举类型,但普遍使用这个函数......这可能吗?
-
只需将 typeof(enumType) 替换为 typeof(T) 即可编译
-
你想要的和
eEnumType.eEnum0.ToString()不一样吗?eEnum0本身无效,如果值在变量中,您将使用Parse()或 stackoverflow.com/questions/6703180/…