Vb.net 将字典(字符串、对象)转换为字典(字符串、字符串)

Vb.net 将字典(字符串、对象)转换为字典(字符串、字符串),vb.net,Vb.net,当我尝试将字典(字符串,对象)传递给想要字典(字符串,字符串)的函数参数时,我得到以下错误: 无法将类型为“System.Collections.Generic.Dictionary”2[System.String,System.object]”的对象强制转换为类型为“System.Collections.Generic.Dictionary”2[System.String,System.String]” 字典中的所有Object值都是字符串,但字典被声明为String/Object。我本以为系

当我尝试将
字典(字符串,对象)
传递给想要
字典(字符串,字符串)
的函数参数时,我得到以下错误:

无法将类型为“System.Collections.Generic.Dictionary”2[System.String,System.object]”的对象强制转换为类型为“System.Collections.Generic.Dictionary”2[System.String,System.String]”

字典中的所有
Object
值都是字符串,但字典被声明为
String/Object
。我本以为系统可以转换这个,但既然不是,我需要自己做

我查看了
.ToDictionary()
原型方法,但所有示例都显示了一个列表正在转换为字典

我找到了一个我想要的答案,但它是用C#写的,我无法理解到VB.Net的转换

编辑1

违规代码。很明显,我会简单地将
dict1
声明为
string/string
在我的实际代码中

Dim dict1作为来自{{“key1”,“value1”}的新字典(字符串,对象)
某些函数期望SPARAM指定字符串字符串(dict1)
编辑2

我试过:

somefunctionthaexpectsparamtobedictofstringstring(dict1.ToDictionary(Function(k)k.Key,Function(v)v.Value.ToString())
但是得到:

System.MissingMemberException:找不到类型为“Dictionary(字符串,对象)”的公共成员“ToDictionary”


这可能是您链接的的的VB.NET版本

Dim dic1 As Dictionary(Of String, Object) = New Dictionary(Of String, Object) 
dic1.Add("A", "B")

Dim dic2 As Dictionary(Of String, String) = dic1.ToDictionary(Function(k) k.Key, 
                                                              Function(v) v.Value.ToString())

请发布有问题的代码。如果你真的知道每一项都是字符串,那么最好的解决方案就是更改字典的声明。尽管给出了示例,但它并不是那么简单。尽管你知道所有的
对象
都是
字符串
s,但类型系统并不知道这一点(如果有,它将是一个
字典(字符串、字符串)
,而不是
字典(字符串、对象)
)。虽然将一个字典从一个字符串到另一个字符串视为一个字典从一个字符串到另一个对象可能是有意义的,但实际上从另一个方向看是没有意义的,因为字典可以合法地包含非字符串的内容。字典是在中生成的,并从方法返回。有时,此字典不需要o是字符串/对象,因为对象是字符串、整数和小数的混合体。在其他情况下,它是一个字符串/对象,其中的对象都是字符串。无论如何,我应该能够将字符串/对象的dict转换为字符串/字符串,因为所有可能的对象都可以轻松转换为字符串值。碰巧我仅当所有对象都是字符串时才需要转换此字符串/对象的dict,但同样,如果不是这样也没关系。请参阅Edit2,这似乎是缺少Imports System.LinqName错误。我不认为它相关,但我尝试转换的字典是其他两个字典合并的结果:dict1。并集(dict2).ToDictionary(函数(d)d.键,函数(d)d.值)
.ToDictionary
不会更改
dic1
。它会生成一个新字典。尝试传递dic1将不会产生所需的结果。在传递给您的function@Steve,我同意这应该是有效的。我接受你的答案。就动态发生的事情而言,字典正在生成y并从函数返回。调试时,返回的字典如下所示:System.Collections.Generic.dictionary`2[System.String,System.Object]}System.Collections.Generic.KeyValuePair(字符串,对象的)