Вызов метода .NET с необязательным параметром по имени в PowerShell - PullRequest
0 голосов
/ 11 октября 2018

У меня есть класс .NET с числом необязательных параметров, скажем:

void Method(int one, int two, int three = 0, int four = 0, int five = 0);

Есть ли способ вызвать метод из PowerShell, передав значение в параметр five без перечисления параметровthree и four?

В C # я могу сделать:

instance.Method(1, 2, five: 5);

Есть ли похожий синтаксис PowerShell?

Ответы [ 2 ]

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

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

В основном вам нужно будет подсчитать соответствующий индекс параметра названных параметров изатем передайте массив с [type]::Missing вместо необязательных параметров, которые вы хотите опустить, до MethodInfo.Invoke():

$method = $instance.GetType().GetMethod("Method") # assuming Method has no additional overloads
$params = @(1, 2, [type]::Missing, [type]::Missing, 5)
$method.Invoke($instance, $params)
0 голосов
/ 11 октября 2018

Да, это возможно.Posweshell построен на основе .Net.Вы можете создать объект класса .Net, вызвав конструктор в Poweshell. Вот статья о том, как использовать .Net в powershell.

https://mcpmag.com/articles/2015/11/04/net-members-in-powershell.aspx

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...