2012-11-09 90 views
1

我正在微軟WHCK 2.0 API上編寫powershell腳本。我來自Perl的背景,所以不知道在PowerShell或C#中。如何創建抽象類類型對象的集合

嗯,我的代碼是:

$ObjectModel = [Reflection.Assembly]::LoadFrom($env:WTTSTDIO + "microsoft.windows.Kits.Hardware.objectmodel.dll") 
$DbConnection = [Reflection.Assembly]::LoadFrom($env:WTTSTDIO + "microsoft.windows.Kits.Hardware.objectmodel.dbconnection.dll") 
$Submission = [Reflection.Assembly]::LoadFrom($env:WTTSTDIO + "microsoft.windows.Kits.Hardware.objectmodel.submission.dll") 

一點點晚。

$List = New-Object "System.Collections.Generic.List``1[Microsoft.Windows.Kits.Hardware.ObjectModel.Target]" 

當我運行這段代碼,它會產生這樣的錯誤:

「新對象:找不到類型:System.Collections.Generic.List`1 [Microsoft.Windows.Kits.Hardware。 ObjectModel.Target]]:確保包含此類型的組件已加載。「

我已驗證使用CurrentDomain.getAssemblies()方法正確加載了會話。 此外,我已驗證了類型「Microsoft.Windows.Kits.Hardware.ObjectModel.Target」是存在於「Microsoft.Windows.Kits.Hardware.ObjectModel.dll」組件,如:

$ObjectModel.GetTypes() | % { 
     if($_.FullName -eq "Microsoft.Windows.Kits.Hardware.ObjectModel.Target") 
     { 
      $found=1 
     } 
} 

一個更我想提到的事情,「Microsoft.Windows.Kits.Hardware.ObjectModel.Target」這種類型/類是一個抽象類。

我搜索了很多,但無法得到正確的方式擺脫這個錯誤。請建議並幫助克服此錯誤。

回答

1

試試這個:

$List = New-Object 'System.Collections.Generic.List[Microsoft.Windows.Kits.Hardware.ObjectModel.Target]' 
+0

基督教嗨,試過了,但是得到同樣的錯誤。 試過這個: $ List = New-Object'System.Collections.Generic.List''1 [System.Object]' 它工作。 但是當我用「Microsoft.Windows.Kits.Hardware.ObjectModel.Target」替換「System.Object」時,它不起作用。 :( –

+0

如果您執行'$ a = new-obect'Microsoft.Windows.Kits.Hardware.ObjectModel.Target''出現錯誤? –

+0

是的,出現錯誤: 「New-Object:Constructor not found。無法找到類型爲microsoft.windows.kits.hardware.objectmodel.target的適當構造函數「 –