如何在PowerShell中使用点运算符调用自定义函数?
实现PowerShell中自定义函数的点运算符调用与链式操作
完全可行,你可以通过扩展.NET类型成员的方式,给[string]类型添加自定义方法,从而实现点运算符直接调用和链式操作,具体方案如下:
实现代码
# 扩展[string]类型,添加自定义方法 Update-TypeData -TypeName System.String -MemberType ScriptMethod -MemberName ReplaceR -Value { return $this.Replace("o", "yes") } Update-TypeData -TypeName System.String -MemberType ScriptMethod -MemberName Go -Value { return $this.Replace("yes", "no") } # 现在可以直接用点运算符调用,支持链式操作 "hello".ReplaceR() # 输出: "hellyes" "hello".ReplaceR().Go() # 输出: "hellno" $var = "hello" $var.ReplaceR().Go() # 同样支持变量调用
关键说明
- 用
Update-TypeData命令可以动态给指定.NET类型添加脚本方法,这里针对System.String(即PowerShell中的字符串类型)扩展。 - 方法体内的
$this自动指代当前字符串实例,不需要像原来的函数那样显式传入第一个参数。 - 这种扩展是会话级的,关闭PowerShell后会失效,如果需要永久生效,把扩展代码添加到你的PowerShell配置文件(
$PROFILE)中即可。 - 注意自定义方法名不要和字符串原有方法重名,否则会覆盖原有方法。
内容的提问来源于stack exchange,提问作者Ichigo Kurosaki
相关产品推荐
相关产品推荐

