object
型の値を持つDictionary
からKeyValuePair
を一つずつ取り出しValueをbyte[]
に変換する処理を作成しています。
イメージは以下になります。
C#
1Dictiobary<string, object> dictionary = new Dictionary<string, onject>() 2{ 3 "aaa": (int)0, 4 "bbb": (long)100, 5 "zzz": "hoge" 6}; 7 8byte[] toByte() 9{ 10 var ret = new byte[32]; 11 foreach(var x in dictionary) 12 { 13 if(x.Key == "zzz") 14 { 15 // stringはパターンが少ないので個別に分岐 16 ret += System.Text.Encoding.ASCII.GetBytes((string)x.Value); 17 } 18 else 19 { 20 var type = x.Value.GetType(); 21 // ここでキャストを行わないと落ちる ↑のtypeを使用してキャストしたい 22 ret += BitConverter.GetBytes(x.Value); 23 } 24 } 25}
Convert.ChangeType()
は戻り値がobject
なので意味がありませんでした。
実際のDictionary
の要素数は300以上あり、そのうちstring
の値は10件にも満たないのですべて列挙しif
で分岐させています。
数値型のほうが正しくキャストできていないと堕ちてしまうのでどうにかキャストを試みたのですがChangeTyep()
にしか検索に引っかかりませんでした。
上のような流れで型が不定のobject
を動的にキャストできる方法はありませんでしょうか
質問が書かれていないようですが、質問はなにでしょうか
回答5件
あなたの回答
tips
プレビュー