J'y ai réfléchi en répondant à cette question .
Comment pouvez-vous éviter d'avoir à qualifier entièrement chaque type dans un espace de noms?
C'est vraiment, vraiment fastidieux d'écrire System.Security.Cryptography.X509Certificates.X509Store
au lieu de X509Store
, ou [System.Security.Cryptography.X509Certificates.StoreName]::My
au lieu de [StoreName]::My
.
En C #, vous avez des using
directives ... et Powershell?
EDIT 1 - Cela fonctionne pour les types:
$ns = "System.Security.Cryptography.X509Certificates"
$store = New-Object "$ns.X509Store"(StoreName,StoreLocation)
New-Object prend un littéral de chaîne comme définition de type, il peut donc être construit par programme.
EDIT 2 - Cela fonctionne pour les membres d'énumération utilisés comme paramètres:
$store = New-Object "$ns.X509Store"("My","LocalMachine")
Où "My" est [System.Security.Cryptography.X509Certificates.StoreName]::My
et "LocalMachine" [System.Security.Cryptography.X509Certificates.StoreLocation]::LocalMachine
.
Les noms littéraux sont automatiquement convertis en membres d'énumération, s'ils sont placés là où un membre d'énumération est attendu.