0

例子:

class foo
{
    byte val = 3;
    string EnumName = "boo";

    Enum boo : byte
    {
        coo = 1,
        doo = 2,
        hoo = 3
    }

    Enum boo2 : byte
    {
        eoo = 3,
        goo = 8
    }
}

我该怎么做这样的事情:

Console.WriteLine((GetEnum(EnumName)value).ToString()); // GetEnum is not real

EnumName 每次都会改变。

预期输出:

当枚举名称为 boo == "hoo"

当枚举名称为 boo2 == "eoo"

编辑:我将使用它来记录:

给 boo2.goo 的消息

给 boo.coo 的留言

给 boo.doo 的消息

4

2 回答 2

1

利用(EnumType) Enum.Parse("boo", typeof(EnumType));

于 2013-07-23T00:10:14.863 回答
0

如果您想获得基于字符串的类型,您可以在整个应用程序域中搜索可用类型,并检查该类型是否为枚举以及名称是否套件。在您拥有正确的类型之后,您应该能够获得任何您想要的值/名称。也许这个解决方案有点像锤子,但我认为它适用于你的情况。(我不知道您的应用程序的结构如何)。

var domain = AppDomain.CurrentDomain;
var assemblies = domain.GetAssemblies();
foreach(var assembly in assemblies)
{
    foreach(Type t in assembly.GetTypes())
    {
        string name = t.Name; // or t. Fullname if you know it
        // you can also check if the type is an Enum, etc...
    }
}
于 2013-07-23T00:27:42.707 回答