使用 params 关键字从 PowerShell 调用 C# 函数

edw*_*win 3 .net c# powershell

我通过 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)
Run Code Online (Sandbox Code Playgroud)

但是如果我想调用带有参数的签名函数怎么办:

public void Foo(string param1, int param2, params string[] param3)
Run Code Online (Sandbox Code Playgroud)

如何从powershell调用这个函数?

如果我这样称呼它:

 $myClass.Foo("Test1", 1, "foo1", "foo2", "foo3")
Run Code Online (Sandbox Code Playgroud)

它显示错误:找不到“Foo”的重载和参数计数:“5”。

Mar*_*ndl 5

我认为你必须这样称呼它:

$myClass.Foo("Test1", 1, @("foo1", "foo2", "foo3"))
Run Code Online (Sandbox Code Playgroud)

基本上,您必须使用以下命令为第三个参数创建一个数组@()