Я могу использовать Систему. Core.dll/System. Наборы. Универсальный. HashSet в powershell?

Я хотел бы использовать HashSet в powershell сценарии. Я думаю, что выяснил, как инстанцировать объектов универсального набора путем выполнения:

[type] $strType = "string"
$listClass = [System.Collections.Generic.List``1]
$listObject = $base.MakeGenericType(@($t))
$myList = New-Object $setObject

Это хорошо работает для списков и словарей, но когда я пытаюсь создать HashSet, я добираюсь:

Unable to find type [System.Collections.Generic.HashSet`1]: make sure that the assembly containing this type is loaded.

Таким образом, это похоже теперь, что я должен загрузить System.Core.dll, но я, может казаться, не заставляю powershell загружать тот блок. Например, вызов [Система. Отражение. Блок]:: LoadWithPartialName ("Система. Ядро"), вызывает это исключение:

"LoadWithPartialName" with "1" argument(s): "Could not load file or assembly 'System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified."

Какие-либо указатели?

12
задан nick 23 July 2010 в 18:30
поделиться

1 ответ

PowerShell 2.0 упрощает эту задачу, 1) добавляя команду Add-Type для загрузки сборки и 2) обновляя синтаксис, чтобы упростить указание закрытого общего имени типа, например:

PS> Add-Type -AssemblyName System.Core
PS> $h = new-object 'System.Collections.Generic.HashSet[string]'
PS> $h.Add('f')
True
22
ответ дан 2 December 2019 в 07:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: