Powershell. Объявите общий список с классом, определенным с использованием Add-Type - PullRequest
20 голосов
/ 27 марта 2009

Я пытаюсь объявить List в PowerShell, где Person определяется с помощью Add-Type:

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

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

Это отлично работает:

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

Но эта строка не работает:

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

Что здесь не так?

Ответы [ 2 ]

31 голосов
/ 27 марта 2009

Это ошибка в New-Object. Это поможет вам создать их проще: http://www.leeholmes.com/blog/2006/08/18/creating-generic-types-in-powershell

ОБНОВЛЕНИЕ: PowerShell добавил поддержку для этого в версии 2:

PS > $r = New-Object "System.Collections.Generic.List[Int]"
PS > $r.Add(10)
9 голосов
/ 30 августа 2012

Ну, я пытался создать список FileStream объектов, и это было мое решение (на основе этой ссылки - которая фактически описывает способ решения вашей проблемы):

$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++
}

Надеюсь, это поможет!

...