Я пытаюсь использовать Enumerable.ToList()
в PowerShell. По-видимому, чтобы сделать это, я должен явно преобразовать объект в IEnumerable<CustomType>
, но я не могу сделать это. Кажется, что я не могу правильно записать IEnumerable<CustomType>
в PowerShell. Оба IEnumerable<string>
и CustomType
самостоятельно работайте правильно (пользовательский тип, который я пытаюсь использовать, назван WpApiLib.Page
), таким образом, я не знаю то, что может я сделать неправильно.
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]] <<<<
См. Ответ здесь: Общие коллекции Powershell . Похоже, это неудачное последствие того, как PowerShell интерпретирует универсальные шаблоны, и вам необходимо полностью определить тип WpApiLib.Page
.
В PowerShell v2 вы можете использовать
Collections.Generic.IEnumerable[string]
для ссылки на IEnumberable
. Этот синтаксис работает для New-Object
(хотя и не с интерфейсом) и, похоже, применим и для приведения.