Как создать коллекцию объектов типа абстрактного класса

Я пишу сценарий powershell на API Microsoft WHCK 2.0. Я из Perl, поэтому не очень разбираюсь в PowerShell или С#.

Ну, мой код:

$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». Этот тип/класс является абстрактным классом.

Я много искал, но не смог найти правильный способ избавиться от этой ошибки. Пожалуйста, предложите и помогите преодолеть эту ошибку.


person Nilesh Mali    schedule 09.11.2012    source источник


Ответы (1)


попробуй это:

$List = New-Object 'System.Collections.Generic.List[Microsoft.Windows.Kits.Hardware.ObjectModel.Target]'
person CB.    schedule 09.11.2012
comment
Привет, Кристиан, тоже пробовал, но получаю ту же ошибку. Пробовал это: $List=New-Object 'System.Collections.Generic.List``1[System.Object]', и это сработало. Но когда я заменяю System.Object на Microsoft.Windows.Kits.Hardware.ObjectModel.Target, это не работает. :( - person Nilesh Mali; 09.11.2012
comment
Если вы сделаете $a = new-obect 'Microsoft.Windows.Kits.Hardware.ObjectModel.Target', появится какая-то ошибка? - person CB.; 09.11.2012
comment
да, есть ошибка: New-Object: Constructor not found. Не удается найти подходящий конструктор для типа microsoft.windows.kits.hardware.objectmodel.target - person Nilesh Mali; 09.11.2012
comment
Ознакомьтесь с образцом сценария, предоставленным Microsoft в документации WHCK, по адресу msdn.microsoft.com/en-us/library/windows/hardware/ в разделе Windows Powershell и под заголовком Создание пакета отправки из проекта. Когда я спросил сотрудников Microsoft об этой ошибке, они сказали, что на их стороне она работает нормально, а что не так на моей стороне, я этого не понимаю. - person Nilesh Mali; 09.11.2012
comment
В ссылке вижу только $targetList = New-Object "System.Collections.Generic.List``1[Target]"... пробовали так? - person CB.; 09.11.2012
comment
Нужно ли мне делать Add-type для этого типа, то есть «Microsoft.Windows.Kits.Hardware.ObjectModel.Target»? - person Nilesh Mali; 14.11.2012