【问题标题】:Error 1 The type or namespace name * could not be found (are you missing a using directive or an assembly reference?)错误 1 ​​找不到类型或命名空间名称 *(您是否缺少 using 指令或程序集引用?)
【发布时间】: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/…

标签: c# generics enums typeof


【解决方案1】:

谢谢Machinarius编辑:和Alex K.)我从你的回答中成功了……我对泛型感到困惑。

答案:

public static string EnumNameToString<T>(T enumActual)
{
     return Enum.GetName( typeof( T ), enumActual );
}

像这样使用:

string str = Helper.EnumNameToString<eEnumType>( eEnumType.eEnum0 );

完美运行。谢谢 - 感激不尽!

【讨论】:

    猜你喜欢
    • 2012-02-12
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 2020-11-28
    • 2015-06-12
    • 2015-04-19
    相关资源
    最近更新 更多