C#与PowerShell

时间:2018-10-25 16:47:13

标签: c# powershell class reflector folderbrowserdialog

我正在尝试在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)
    }
}

1 个答案:

答案 0 :(得分:2)

在C#中,Call parameters是可选的params类型。
在您的Powershell类中,Call具有三个必需参数,$Parameters不是可选的。

您似乎可以在Powershell脚本中省略该参数,因为您没有使用它,但是我不能说Call2是否使用它。您可能只想在Powershell脚本中更改这两种方法的签名。