1
Mono.Cecilを使用して列挙型かどうかを調べる方法(C#)Mono.Cecilを使用して列挙型かどうかを調べる方法
Type.IsEnumを使用するだけで簡単に判断できます。しかし、私はTypeDefinitionで類似の機能を見つけることができません...
決定する方法はありますか?
Mono.Cecilを使用して列挙型かどうかを調べる方法(C#)Mono.Cecilを使用して列挙型かどうかを調べる方法
Type.IsEnumを使用するだけで簡単に判断できます。しかし、私はTypeDefinitionで類似の機能を見つけることができません...
決定する方法はありますか?
TypeDefinition
にIsEnum
というプロパティがあります。
ああ、あなたがあなたの次の質問をする前に、ここに戻って、それは `の` IsEnum`プロパティがあるように思えない...セシルを使用して、
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));
}
のint値だとあなたが列挙型文字列を解析する方法ですTypeDefinition'。 [ここ](https://github.com/jbevain/cecil/blob/master/Mono.Cecil/TypeDefinition.cs#L408)を参照してください。あなたのバージョンにこれが含まれていない場合は、ソースと同じ拡張メソッドを書くことができます – Rob