web-dev-qa-db-fra.com

PowerShell. Déclarez la liste générique avec la classe définie à l'aide de «type add-type»

J'essaie de déclarer la liste dans PowerShell, où la personne est définie à l'aide de type add-type:

add-type -Language CSharpVersion3 -TypeDefinition @"
    public class Person
    {
        public Person() {}

        public string First { get; set; }
        public string Last { get; set; }
    }
"@ 

Cela fonctionne bien:

New-Object Person
New-Object System.Collections.Generic.List``1[System.Object]

Mais cette ligne échoue:

New-Object System.Collections.Generic.List``1[Person]

Qu'est-ce qui ne va pas ici?

21
alex2k8

Ceci est un bogue dans le nouvel objet. Cela vous aidera à les créer plus facilement: http://www.leeholmes.com/blog/2006/08/18/Creating-Generic-types-in-powershell

Mise à jour: PowerShell Ajout de la prise en charge de cette version 2:

PS > $r = New-Object "System.Collections.Generic.List[Int]"
PS > $r.Add(10)
34
LeeHolmes

Eh bien, j'essayais de créer une liste de FileStream objets et c'était ma solution (basée sur ce lien - qui décrit réellement un moyen de résoudre votre problème):

$fs = New-Object 'System.Collections.Generic.List[System.IO.FileStream]'
$sw = New-Object 'System.Collections.Generic.List[System.IO.StreamWriter]'
$i = 0
while ($i < 10)
{
    $fsTemp = New-Object System.IO.FileStream("$newFileName",[System.IO.FileMode]'OpenOrCreate',[System.IO.FileAccess]'Write')
    $fs.Add($fsTemp)
    $swTemp = New-Object System.IO.StreamWriter($fsTemp)
    $sw.Add($swTemp)
    $i++
}

J'espère que cela pourra aider!

9
Girardi