2009-03-27 8 views
17

Tôi cố gắng để công bố Danh sách trong PowerShell, nơi Người được định nghĩa sử dụng Add-Type:Powershell. Khai báo danh sách chung với lớp được định nghĩa sử dụng 'Add-Type'

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

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

này hoạt động tốt:

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

Nhưng dòng này không thành công:

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

Có gì sai ở đây?

+0

PowerShell 2.0, tôi đoán? –

+0

Có, làm việc với 2.0 – alex2k8

+1

Đối với bất cứ ai khác tự hỏi, dòng thất bại (ở trên) hoạt động trong Powershell 3.0 (mặc dù tôi cần phải loại bỏ "-Language CSharpVersion3" vì tôi chạy nó trên Windows Server 2012). –

Trả lời

8

Vâng, tôi đã cố gắng để tạo ra một danh sách các FileStream đối tượng và đây là giải pháp của tôi (dựa trên this link - thực tế mô tả cách giải quyết vấn đề của bạn):

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

Hy vọng điều đó sẽ hữu ích!