6

背景

这篇文章解释了如何在 Powershell 中使用扩展方法

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

将此与某人在 C# 中所做的比较 - 他们添加了“使用 SomeAssembly”并加载了所有扩展方法。

我的问题

这是否变得更简单 Powershell 2.0. 如果是这样,如何在 Powershell 2.0 中使用扩展方法?我检查了公开可用的文档并安装了 CTP,但没有看到任何有用的东西。

4

1 回答 1

3

在 V2 中它并没有变得更容易,但是有一个您可能不知道的扩展机制。

我相信部分问题在于 PowerShell 对泛型的处理(或缺乏)。

此外,对于要应用的扩展方法,必须强制执行类型化集合,这在 PowerShell 中是困难的。PowerShell 作为一种动态语言,支持构建各种类型的集合,并且大多数集合都表示为 Object 数组。扩展方法需要从集合类型中推断出参数,然后检查谓词的类型是否正确。

如果您关心的是一些类似 LINQ 的函数,那么有许多 cmdlet 在处理对象集合时提供了相同的功能。

PowerShell 的扩展类型系统允许您通过添加 xml 文件或修改现有文件(建议创建新文件)来为各种类型添加方法。Jeffrey Snover 在这篇博文中演示了如何将 ScriptProperty 添加到 Object 类中。

它不完全相同,但它可以完成工作。

于 2009-01-11T00:08:11.723 回答