Powershell. Объявить общий список с определенным классом с помощью 'Add-Type'
Я пытаюсь объявить 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]
Что здесь не так?
Ответы
Ответ 1
Это ошибка в New-Object. Это поможет вам создать их более легко:
http://www.leeholmes.com/blog/2006/08/18/creating-generic-types-in-powershell
UPDATE: PowerShell добавила поддержку для этой версии в версии 2:
PS > $r = New-Object "System.Collections.Generic.List[Int]"
PS > $r.Add(10)
Ответ 2
Ну, я пытался создать список объектов 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++
}
Надеюсь, что это поможет!