Pensé en ello mientras respondía esta pregunta .
¿Cómo puede evitar la necesidad de calificar completamente cada tipo en un espacio de nombres?
Es realmente, muy tedioso escribir en System.Security.Cryptography.X509Certificates.X509Store
lugar de X509Store
, o en [System.Security.Cryptography.X509Certificates.StoreName]::My
lugar de [StoreName]::My
.
En C # tienes using
directivas ... ¿qué pasa con Powershell?
EDITAR 1 : esto funciona para los tipos:
$ns = "System.Security.Cryptography.X509Certificates"
$store = New-Object "$ns.X509Store"(StoreName,StoreLocation)
New-Object toma un literal de cadena como la definición de tipo, por lo que puede construirse mediante programación.
EDITAR 2 : esto funciona para los miembros de enumeración utilizados como parámetros:
$store = New-Object "$ns.X509Store"("My","LocalMachine")
Donde está "My" [System.Security.Cryptography.X509Certificates.StoreName]::My
y "LocalMachine" [System.Security.Cryptography.X509Certificates.StoreLocation]::LocalMachine
.
Los nombres literales se convierten automáticamente en miembros de enumeración, si se colocan donde se espera un miembro de enumeración.