PowerShell - Псевдоним набора для загруженного блока

Я использую этот код для загрузки блока .NET в PowerShell:

[System.Reflection.Assembly]::Load("System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089") | out-null 
[System.Windows.Forms.MessageBox]::Show("Hello world")

Могу я устанавливать псевдоним для блока (например: 'Система. Windows. Формы = 'Формы') так, чтобы я не вводил полное имя блока при вызове статических методов как MessageBox. Показать ()?

7
задан Msonic 19 September 2012 в 15:24
поделиться

2 ответа

Хотя вы не можете создать какой-то псевдоним пространства имен как таковой, вы можете использовать следующий трюк (взят из Поваренной книги PowerShell Ли Холмса):

$namespace = "System.Windows.Forms.{0}"
$form = New-Object ($namespace -f "Form")

Но это будет работать только с New-Object , поскольку это принимает строку для имени класса. Вы не можете использовать этот синтаксис с именем типа в квадратных скобках.

Однако вы можете опустить часть системы , которая подразумевается:

[Windows.Forms.MessageBox]::Show("Hello World!")

Делает ее немного короче.

5
ответ дан 6 December 2019 в 09:59
поделиться

Вы можете сохранить тип в переменной и использовать переменную

$forms = [System.Windows.Forms.MessageBox]
$forms::Show('Hello')

. В этом случае вы можете загрузить сборку следующим образом:

Add-Type –assembly system.windows.forms
13
ответ дан 6 December 2019 в 09:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: