Я пытаюсь показать окно сообщения от PowerShell с кнопками «да» и «Нет».Вызовите Messagebox.Show() из PowerShell с более чем кнопкой по умолчанию?
можно отобразить окно сообщения с кнопкой OK:
[system.windows.forms.messagebox]::show("Hello, world!")
И я могу создать переменную $ кнопок с кнопками я хочу:
$buttons=[system.windows.forms.messageboxbuttons].yesno
И я могу видеть, что шоу() статический метод перегружен и что один из вариантов состоит в том, чтобы дать три параметра:
Показать (String, String, MessageBoxButtons) Dis воспроизводит окно сообщения с указанным текстом, заголовком и кнопками. (?)
Поэтому, естественно, я решил назвать это:
[system.windows.forms.messagebox]::show("Are you sure?","",$buttons)
И это приводит к ошибке:
Не удается найти перегрузку "Show" и количество аргументов: "3".
Но есть перегрузка для «Показать», которая принимает три аргумента!
Что я делаю неправильно?
(А может кто-то сказать мне, почему вызов метода в PowerShell обычно делается с использованием синтаксиса точка:?. Object.method(), но требует «::» для класса MessageBox Это сбивает с толку)
Я понял :: был для статического звонка, но потом не мог объяснить себе, почему PowerShell сделает это. Понятно, что MessageBox - это класс, а не объект; следовательно :: вместо. представляется ненужным. Зачем добавлять более точный синтаксис, если интерпретатору это не нужно? И это смущает пользователя? –
В зависимости от используемого синтаксиса (т.е. :: или.), [YourType] является эквивалентом C# typeof (YourType) или пути доступа к статическим методам. Интерпретатору необходимо знать, что вы хотите сделать! Как бы вы поступили? –
Я думаю, что я сделал бы это как в C#. –