整数をキーに、匿名オブジェクトを値として持つvb.net辞書を宣言したいと思います。これは、各ループに対して並列で満たされます。匿名クラスのプロパティは常に同じです。しかし、匿名オブジェクトの署名で辞書を宣言する方法はありますか?vb.netで辞書(Of Integer、AnonymousType)を宣言する
今、私は整数とオブジェクトの辞書を使用しています。
Dim MyDict As New Dictionary(Of String, Dictionary(Of Integer, Object))(12)
'In my loop
Dim MyLinqDict = Something.GroupBy(…).ToDictionary(Function(x) x.Kex, Function(x) New With {.a = 1, .b = 2})
MyDict.Add(MyKey, MyLinqDict)
明らかな問題は、その内部辞書の内容が単なるオブジェクトであることです。私は知っているかどうか、もしあれば、実際の目的でその内面を宣言することはできません。匿名の型として "Object"を型キャストできるかどうかは分かりません。
Dim MyContent = DirectCast(MyDict("Some key")(1), ???).a
誰か助けてもらえますか?
両方の方法を使用することはできません。それは匿名かどうかです。プロパティー 'a'にキャストしてアクセスできるようにする必要がある場合は、objectを使用する代わりに定義する必要があります。匿名にしたい場合は、 'a 'を持たないオブジェクトを取得しないことを信用しなければなりません。 –
匿名型はLinqの便宜です。あなたがこれをしなければならないとき、彼らは便利になりません。だから、これをしないで、小さなヘルパークラスを宣言して結果を保存してください。今は簡単です。 –