views:

56

answers:

2

I'm trying to use Enumerable.ToList() in PowerShell. Apparently, to do that, I have to explicitly convert the object to IEnumerable<CustomType>, but I am unable to do that. It seems I can't correctly write IEnumerable<CustomType> in PowerShell. Both IEnumerable<string> and CustomType itself work correctly (the custom type I'm trying to use is called WpApiLib.Page), so I don't know what can I be doing wrong.

PS C:\Users\Svick> [Collections.Generic.IEnumerable``1[System.String]]

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     False    IEnumerable`1


PS C:\Users\Svick> [WpApiLib.Page]

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Page                                     System.Object


PS C:\Users\Svick> [Collections.Generic.IEnumerable``1[WpApiLib.Page]]
Unable to find type [Collections.Generic.IEnumerable`1[WpApiLib.Page]]: make su
re that the assembly containing this type is loaded.
At line:1 char:51
+ [Collections.Generic.IEnumerable``1[WpApiLib.Page]] <<<<
+1  A: 

See the answer here: http://stackoverflow.com/questions/184476/powershell-generic-collections. It looks like this is an unfortunate consequence of how PowerShell interprets generics, and you'll need to fully qualify the WpApiLib.Page type.

kvb
ouch, that's really ugly, thanks
svick
+1  A: 

In PowerShell v2 you can use

Collections.Generic.IEnumerable[string]

to refer to IEnumberable<string>. The syntax works for New-Object (though not with an interface) and it seems to be valid for casts, too.

Joey