簡體   English   中英

(C#)如何使用Mono.Cecil確定它是否為枚舉類型?

[英](C#) How to determine whether it is an enum type using Mono.Cecil?

如何使用Mono.Cecil確定它是否是枚舉類型?

只需使用Type.IsEnum即可輕松確定。 但我在TypeDefinition中找不到任何類似的功能......

有什么方法可以確定嗎?

這里有一個IsEnum物業TypeDefinition

哦,在你問下一個問題之前,這里是你如何使用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));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM