繁体   English   中英

从字符串获取枚举

[英]Get Enum from String

例:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM