gpt4 book ai didi

c# - (C#) 如何使用Mono.Cecil判断是否是枚举类型?

转载 作者:行者123 更新时间:2023-11-30 21:44:51 26 4
gpt4 key购买 nike

如何使用Mono.Cecil判断是否是枚举类型?

只需使用 Type.IsEnum 即可轻松确定。但我在 TypeDefinition 中找不到任何类似的函数...

有什么办法可以确定吗?

最佳答案

TypeDefinition 上有一个 IsEnum 属性。

哦,在你问下一个问题之前,以下是如何使用 Cecil 将枚举字符串解析回它的 int 值...

int ParseEnum(TypeReference enumRef, string value)
{
var enumDef = enumRef.Resolve();
if (!enumDef.IsEnum)
throw new InvalidOperationException();

int? result = null;

foreach (var v in value.Split(',')) {
foreach (var field in enumDef.Fields) {
if (field.Name == "value__")
continue;
if (field.Name == v.Trim())
result = (result ?? 0) | (int)field.Constant;
}
}

if (result.HasValue)
return result.Value;

throw new Exception(string.Format("Enum value not found for {0}", value));
}

关于c# - (C#) 如何使用Mono.Cecil判断是否是枚举类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40601718/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com