2016-12-22 3 views
3

データベースから値を読み込んでオブジェクトに変換するコードを記述しています。文字列を列挙型に変換しますが、実行時に列挙型しか認識されない場合

オブジェクトには、カスタム定義の列挙型のメンバーがいくつかあります。

私は列挙型に文字列変数を変換するために、このような何かをしようとしています:

var castTo = fieldInfo.PropertyType.GetType(); //returns a Type object, e.g. MyEnum 
var parsedEnum = (castTo) Enum.Parse(castTo, valueFromSql); 

問題は、コンパイラは、Typeオブジェクトが含まれている変数を受け入れないだろうということです。

castTo変数の代わりにenum名を使用しても、実行時に定義する必要がある場合は問題ありません。

答えて

2

あなたはそれを試みることができる:タイプの変更について

var castTo = fieldInfo.PropertyType.GetType(); 
var parsedEnum = Convert.ChangeType(Enum.Parse(castTo, valueFromSql), castTo); 

詳しい情報はここで見つけることができます:https://msdn.microsoft.com/en-us/library/system.convert.changetype(v=vs.110).aspx

は、データベースがあなたの中に存在しない値が含まれているような状況を回避する方法があるはずですenum。アプリケーションはキャストすることはできませんので、クラッシュします。