开发者

Can I use System.Core.dll/System.Collections.Generic.HashSet in powershell?

I'd like to use a HashSet in a powershell script. I think I've figured out how to instantiate generic collection objects by doing:

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

This works fine for lists and dictionaries, but when I try to create a HashSet I get:

Unable to find type [System.Collections.Generic.HashSet`1]: make sure that the assembly containing this 开发者_开发技巧type is loaded.

So it looks like now I need to load System.Core.dll but I can't seem to get powershell to load that assembly. For example calling [System.Reflection.Assembly]::LoadWithPartialName("System.Core") causes this exception:

"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."

Any pointers?


PowerShell 2.0 makes this easier by 1) adding the Add-Type cmdlet for loading an assembly and 2) updates to the syntax to make specifying a closed generic type name simpler e.g.:

PS> Add-Type -AssemblyName System.Core
PS> $h = new-object 'System.Collections.Generic.HashSet[string]'
PS> $h.Add('f')
True
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜