Думал об этом, отвечая на этот вопрос .
Как вы можете избежать необходимости полностью квалифицировать каждый тип в пространстве имен?
Это действительно очень утомительно писать System.Security.Cryptography.X509Certificates.X509Store
вместо X509Store
или [System.Security.Cryptography.X509Certificates.StoreName]::My
вместо [StoreName]::My
.
В C # у вас есть using
директивы ... как насчет Powershell?
РЕДАКТИРОВАТЬ 1 - Это работает для типов:
$ns = "System.Security.Cryptography.X509Certificates"
$store = New-Object "$ns.X509Store"(StoreName,StoreLocation)
New-Object принимает строковый литерал в качестве определения типа, поэтому он может быть построен программно.
РЕДАКТИРОВАТЬ 2 - Это работает для членов перечисления, используемых в качестве параметров:
$store = New-Object "$ns.X509Store"("My","LocalMachine")
Где «Мой» [System.Security.Cryptography.X509Certificates.StoreName]::My
и «LocalMachine» [System.Security.Cryptography.X509Certificates.StoreLocation]::LocalMachine
.
Литеральные имена автоматически преобразуются в члены перечисления, если они размещены там, где ожидается член перечисления.