我正在尝试在PowerShell中重新编写C#脚本。我正在逐步弄清楚。
PowerShell版本告诉我“无法为“ Call”和参数计数:“ 2”找到重载。”。所以我知道这是因为PS要求存在第三个参数。但是,为什么C#不需要它?是因为“参数”?
在这种情况下,这些参数甚至意味着什么? 如何在PowerShell中模仿呢?
是的,我遗漏了很多代码,因为我不认为这与我不了解此特定错误的原因有关。
C#
object dialog = r.Call(ofd, "CreateVistaDialog")
public class Reflector
{
public object Call(object obj, string func, params object[] parameters)
{
return Call2(obj, func, parameters);
}
}
PowerShell
$Dialog = $Reflector.Call($This.OFD, "CreateVistaDialog")
Class Reflector
{
[Object]Call([Object]$Obj, [String]$Func, [Object[]]$Parameters)
{
return $This.Call2($Obj, $Func, $Parameters)
}
}
答案 0 :(得分:2)
在C#中,Call
parameters
是可选的params
类型。
在您的Powershell类中,Call
具有三个必需参数,$Parameters
不是可选的。
您似乎可以在Powershell脚本中省略该参数,因为您没有使用它,但是我不能说Call2
是否使用它。您可能只想在Powershell脚本中更改这两种方法的签名。