我以这种方式从PowerShell调用C#函数:
// C# code
public void Foo(string param1, int param2, Dictionary<string, string> param3)
# PowerShell code:
Add-Type -Path $pathToDll
$myClass= New-Object -TypeName MyClass
$dic= New-Object 'System.Collections.Generic.Dictionary[String,String]'
$dic.Add("Key1","Val1")
$dic.Add("Key2","Val2")
$myClass.Foo("Test1", 1, $dic)
但是如果我想用带有params的签名调用函数怎么办:
public void Foo(string param1, int param2, params string[] param3)
如何从powershell调用此函数?
如果我这样称呼它:
$myClass.Foo("Test1", 1, "foo1", "foo2", "foo3")
它显示错误:找不到“Foo”的重载和参数计数:“5”。
答案 0 :(得分:4)
我认为你必须这样称呼它:
$myClass.Foo("Test1", 1, @("foo1", "foo2", "foo3"))
基本上你必须使用@()