Есть ли более простой способ использования методов расширения в Powershell v2? - PullRequest
6 голосов
/ 10 января 2009

Фон

Этот пост объясняет, как можно использовать методы расширения в Powershell

http://community.bartdesmet.net/blogs/bart/archive/2007/09/06/extension-methods-in-windows-powershell.aspx

Сравните это с тем, что кто-то делает в C # - они добавляют «using SomeAssembly» и загружаются все методы расширения.

Мои вопросы

Разве это не стало проще в Powershell 2.0. И если так, что нужно сделать, чтобы использовать методы расширения в Powershell 2.0? Я проверил общедоступную документацию и установил CTP и не вижу ничего, что может помочь.

1 Ответ

3 голосов
/ 11 января 2009

Это не становится проще в V2, но есть механизм расширения, о котором вы можете не знать.

Я считаю, что часть проблемы заключается в обработке PowerShell (или его отсутствии) обобщений.

Кроме того, для применения методов расширения необходимо применять типизированные коллекции, что сложно в PowerShell. PowerShell, как динамический язык, поддерживает создание коллекций различных типов, и большинство коллекций представлены в виде массивов Object. Методы расширения требуют, чтобы параметры были выведены из типа коллекции, а затем проверенный предикат был правильного типа.

Если вас интересуют некоторые функции, подобные LINQ, существует несколько командлетов, которые предоставляют одинаковые функции при работе с коллекциями объектов.

Система расширенных типов PowerShell позволяет добавлять методы к различным типам, добавляя XML-файл или изменяя существующий (рекомендуемый путь - создание нового). Джеффри Сновер демонстрирует это путем добавления ScriptProperty к классу Object в этом сообщении в блоге .

Это не совсем то же самое, но это может сделать работу.

...