【发布时间】:2009-05-11 02:28:18
【问题描述】:
是否可以在 PowerShell 中编写扩展方法?还是在现有类型(如 [string] 运行时存在)之上添加一个新方法?
【问题讨论】:
标签: .net powershell extension-methods monkeypatching
是否可以在 PowerShell 中编写扩展方法?还是在现有类型(如 [string] 运行时存在)之上添加一个新方法?
【问题讨论】:
标签: .net powershell extension-methods monkeypatching
如果您有要添加到特定类型的方法或属性,可以通过 PowerShell 的自适应类型系统创建自定义类型扩展。
自定义类型扩展是一个 XML 文件,用于描述类型的属性或脚本方法,然后通过 Update-TypeData cmdlet 将其加载到 PowerShell 会话中。
可以在PowerShell Team Blog - Hate Add-Member? (PowerShell's Adaptive Type System to the Rescue) 上找到一个很好的例子
【讨论】:
我不知道用扩展方法修补类型的方法。但当然可以通过 add-member cmdlet 修补对象
PS> $a = "foo"
PS> $a = add-member -in $a -memberType ScriptMethod -name Bar -value { $this + "bar" } -passthru
PS> $a.Foo()
foobar
编辑解释完全可读的 PowerShell 语法:)
我喜欢 PowerShell,但它确实时不时会想出一些神秘的语法。
$a 并将管道清空。$a现在有你添加的方法【讨论】: