PowerShell - сокращает имена пространств имен, чтобы упростить доступ к типам - PullRequest
6 голосов
/ 26 мая 2010

Есть ли способ сокращения ссылок на пространство имен PowerShell?

Ввод [RootNameSpace1.NameSpace2.Namepsace3+SomeEnum]::SomeValue облагается налогом и не очень хороший пользовательский опыт. Я понимаю, что вы можете ссылаться на объекты уровня System без пространства имен, так что [Type]::GetType(... будет работать. Есть ли какой-нибудь манифест, который я мог бы создать или использовать для сокращения длинных пространств имен?

Ответы [ 2 ]

6 голосов
/ 27 мая 2010

Любые методы, принимающие Enums, будут принимать строки, но это только для Enums и там, где нет двусмысленности (то есть, нет никаких других перегрузок со строками, совпадающими с сигнатурой в этом стиле).

Если вы используете powershell v2.0, вы можете (ab) использовать ускорители типов. Я писал об этом раньше, и Джоэл Беннетт обернул мою технику в удобный сценарий:

http://poshcode.org/1869

-Oisin

5 голосов
/ 26 мая 2010

Длинные типы могут быть присвоены переменным, а затем использованы через эти переменные:

# enum values
$rvk = [Microsoft.Win32.RegistryValueKind]
$rvk::Binary
$rvk::DWord

# static members
$con = [System.Console]
$con::CursorLeft
$con::WriteLine('Hello there')

# just to be sure, look at types
.{
    $rvk::Binary
    $con::WriteLine
    $con::CursorLeft
} |
% { $_.GetType() }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...