2009-03-27 3 views
17

Ich versuche Liste in Powershell erklären definiert verwenden, in dem die Person definiert wird mit Add-Type:Powershell. Deklarieren generische Liste mit Klasse 'Add-Type'

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

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

Dies funktioniert:

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

Aber diese Zeile schlägt fehl:

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

Was ist hier falsch?

+0

PowerShell 2.0, nehme ich an? –

+0

Ja, mit 2.0 arbeiten – alex2k8

+1

Für alle anderen Fragen funktioniert die Zeile, die (oben) fehlschlägt (in Powershell 3.0) (obwohl ich "-Language CSharpVersion3" entfernen musste, weil ich dies auf Windows Server 2012 ausgeführt habe). –

Antwort

8

Nun, ich habe versucht, eine Liste von FileStream Objekte zu erstellen und dies war meine Lösung (basierend auf this link - das beschreibt, tatsächlich einen Weg, um Ihr Problem zu lösen):

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

Hoffnung, das hilft!