无法将“System.Collections.Hashtable”转换为“System.Collections.Generic.Dictionary

时间:2016-10-17 10:51:11

标签: c# powershell

我正在尝试在Powershell中创建Dictionary并将其传递给C#函数

$params= @{"abc"="123","xyz"=$False};

C#方法接受Dictionary<string,object>作为参数。

当我尝试从PowerShell调用MyFunc($params)时,我收到以下错误

  

无法使用值转换参数“arguments”:   “System.Collections.Hashtable”,用于输入“MyFunc”   “System.Collections.Generic.Dictionary2 [System.String,System.String]”:   “无法创建类型的对象   “System.Collections.Generic.Dictionary2 [System.String,System.String]”

1 个答案:

答案 0 :(得分:3)

它说的是,你在PowerShell中创建了HashTable,但试图在C#中将其用作Dictionary。你必须把一切都变成一个或另一个。以防万一,这是Powershell的字典声明:

$params = New-Object 'System.Collections.Generic.Dictionary[String,object]'
$params.Add("abc","123")

或者您可以更改C#方法以接受HashTable