私はこれについていくつかの助けを得ることを望んでいました。辞書のキーである文字列と、キャストする必要がある列挙型を取ることができる関数が必要です。変数を使った列挙型の列挙
辞書キーは、列挙型に対応する数字になります。私は列挙型に変数をキャストする方法を知る必要があります。
ここに私が書いた機能があります。これは私の説明よりもはっきりしているかもしれません。
string GetEnum(string keyName, Enum enumType)
{
var defaultOut = "";
Model.Form.TryGetValue(keyName, out defaultOut);
if(defaultOut != ""){
return EnumDescriptionUtility.GetDescription((enumType)Convert.ToInt32(defaultOut));
}
else{
return defaultOut;
}
}
私は以前このコードのほとんどを使っていました。以前の違いは、enumTypeが実際の列挙型にハードコードされていたことです。私はすべての繰り返しを関数に負担したい。
何か助けていただければ幸いです。
ここには多くの潜在的な問題があります。コンバージョンを確認していますか?また、なぜ文字列をint型に変換し、次にenum型に変換するのですか...なぜ単に文字列を列挙型に変換しないのですか?それとも、文字列全体を切り詰めて列挙型(つまり、 'TryGetValue'への出力)として扱うのはなぜですか? –
悪い変換のチェックを追加することができます。文字列はデータベースから出てきます。だから私はそれを列挙型に変換する必要がありますユーザーは素晴らしいバージョンに直面している列挙型の説明を取得します。 – HarvP
私はあなたの 'defaultOut'が' Convert.ToInt32'に常に渡されるのなら、どうしてそれが文字列なのですか?なぜintではないのですか?または、私が言ったように、それをenumにしてみませんか? –