2012-03-17 4 views
5

私の解決策では、私はキーとして列挙型の辞書に大きく依存しています。私はそれが理解しやすく、この構造を読むのが簡単だとわかります。enumキーを使用した辞書に代わるものはありますか?

上記の大きな障害は、これをシリアル化することができないことです。これに関する詳細については、Problems with Json Serialize Dictionary<Enum, Int32>を参照してください。

私の質問は:
JSONシリアライザを内蔵した、シリアライズJSONでDictionary<enunm,object>を交換するのに等しく読めると直感的なパターンはありますか?

今日私はa.Instance.QueryableFields[Fields.Title]a.Instance.QueryableFields[ Fields.Title.ToString()]に置き換えました。それほどエレガントではなく、エラーのためにオープンしています。

+0

オブジェクトのプロパティは辞書の値として格納されていますか?その場合、enum値をハッシュコードとして使用することをお勧めします。 – Brannon

+0

どうしたらうまくいくのですか?私に例を教えていただけますか? – Fontanka16

答えて

-1

あなたは簡単にC#の列挙型のように、ここでの配列と辞書を置き換えることができますが、内部で整数として保存されます。

public enum MyEnum { Zero=0, One, Two }; 

object[] dictionary = new object[3]; 
dictionary[(int)MyEnum.Zero] = 4; 

EDITを:(コメントを参照)

あなたはまた、Dictionary<Int, Object>Dictionary<Enum, Object>を置き換えることができます。

+5

これは、値が '0 'から' array.Length-1'に途切れないことが確実である場合にのみ意味があります。 '{A = 0、B = 42、C = 31415} 'のような列挙型を持つ場合、' 31416'要素の配列を作成する必要があります... – digEmAll

1

シリアル化するときは、文字列値を選択するだけです。非常にきれいではありませんが、機能します。

a.Instance.QueryableFields.ToDictionary(x => x.Key.ToString(), x => x.Value) 
+0

これはオプションです。しかし、私は自分のシリアル化メソッドを書く必要があります。提案していただきありがとうございますが、私は全体を置き換える方法を探しています。辞書かenumのどちらか。 – Fontanka16

関連する問題