C # против PowerShell - PullRequest
       41

C # против PowerShell

0 голосов
/ 25 октября 2018

Я пытаюсь переписать сценарий C # в PowerShell.Я разбираю это по частям.

Версия PowerShell говорит мне: «Не удается найти перегрузку для« Call »и счетчика аргументов:« 2 ».».Так что я знаю, что это потому, что PS требует присутствия третьего параметра.Но почему C # не требует этого?Из-за «params»?

Что парамы вообще означают или делают в этом контексте?Как я могу имитировать это в 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 голосов
/ 25 октября 2018

В C # Call parameters - необязательный тип params.
В вашем классе Powershell Call имеет три обязательных параметра, $Parameters не является обязательным.

Похоже, что вы можете опустить этот параметр в вашем скрипте Powershell, поскольку вы его не используете, но я не могу сказать, использует ли Call2 его или нет.Вы можете просто захотеть изменить подписи обоих методов в вашем скрипте Powershell.

...