从字符串获取枚举
本文关键字:枚举 获取 字符串 | 更新日期: 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...
}
}