从字符串获取枚举

本文关键字:枚举 获取 字符串 | 更新日期: 2023-09-27 18:24:25

示例:

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

从字符串获取枚举

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

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

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...
    }
}