文字列を解析して、MyEnum型のnull可能なプロパティに戻そうとしています。Nullable Enumを解析する
public MyEnum? MyEnumProperty { get; set; }
私はライン上のエラーを取得しています:
Enum result = Enum.Parse(t, "One") as Enum;
// Type provided must be an Enum. Parameter name: enumType
私は以下のサンプルのコンソールのテストを持っています。 MyEntity.MyEnumProperty
プロパティでnullableを削除すると、コードが機能します。
リフレクション以外でtypeOf列挙型を知らなくてもコードを動作させるにはどうすればよいですか?
static void Main(string[] args)
{
MyEntity e = new MyEntity();
Type type = e.GetType();
PropertyInfo myEnumPropertyInfo = type.GetProperty("MyEnumProperty");
Type t = myEnumPropertyInfo.PropertyType;
Enum result = Enum.Parse(t, "One") as Enum;
Console.WriteLine("result != null : {0}", result != null);
Console.ReadKey();
}
public class MyEntity
{
public MyEnum? MyEnumProperty { get; set; }
}
public enum MyEnum
{
One,
Two
}
}
ゴールデン!ありがとうございました –
私はこれが2012年のものだと知っていますが、同じ問題(私のような)に遭遇した人のために - 小さな改善:t.GetGenericTypeDefinition()== ...の前にt.IsGenericTypeのチェックを追加します。コードはnull値ではない列挙型に対して壊れることがあります –