是否可以在PowerShell中编写扩展方法?或者在运行时直播现有类型的新方法,如[string] live?
答案 0 :(得分:9)
我不知道用扩展方法修补类型的方法。但是通过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
现在具有您添加的方法答案 1 :(得分:9)
如果您想要添加到特定类型的方法或属性,可以通过PowerShell的自适应类型系统创建自定义类型扩展。
自定义类型扩展是一个XML文件,它描述类型的属性或脚本方法,然后通过Update-TypeData cmdlet将其加载到PowerShell会话中。
可以在PowerShell Team Blog - Hate Add-Member? (PowerShell's Adaptive Type System to the Rescue)
上找到一个很好的例子