是否可以在 PowerShell 中编写扩展方法?或者在运行时在现有类型(如 [string] )之上添加一个新方法?
问问题
1145 次
2 回答
10
如果您有要添加到特定类型的方法或属性,则可以通过 PowerShell 的自适应类型系统创建自定义类型扩展。
自定义类型扩展是一个 XML 文件,用于描述类型的属性或脚本方法,然后通过 Update-TypeData cmdlet 将其加载到 PowerShell 会话中。
于 2009-05-10T18:28:18.073 回答
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,但它确实时不时会提出神秘的语法。
- “-in”:这是 inputObject 的缩写,本质上表示向此添加成员
- “-memberType”:您可以将许多不同类型的值添加到运行时对象,包括方法、注释属性、代码方法等……完整列表请参见“get-help add-member -full”
- “-passthru”:获取刚刚添加成员的对象并将其推送到管道中。如果没有这个标志,分配将被分配和空管道到
$a
. - 赋值调用基本上是确保
$a
现在有你添加的方法
于 2009-05-08T17:38:34.167 回答