PowerShell中能否将静态方法/属性保存为对象进行调用?
PowerShell 方法引用赋值实现方案
完全可以实现你要的效果,PowerShell 原生支持将方法引用直接赋值给变量,无需额外封装,静态方法、实例方法都适用。
你提到的字符串检测场景实现
直接赋值静态方法引用即可,后续调用变量传入目标参数就能运行:
# 赋值静态方法引用到变量 $test = [string]::IsNullOrWhiteSpace # 两种调用方式都可用 # 方式1:用Invoke方法传参 $test.Invoke($null) # 输出 True $test.Invoke(" ") # 输出 True $test.Invoke("有效内容") # 输出 False # 方式2:用调用运算符&,写法更简洁 & $test "" # 输出 True
通用用法说明
这种语法适用于所有.NET 方法,不局限于字符串相关的静态方法:
- 实例方法也可以直接赋值引用,会自动绑定原有实例对象:
$demoStr = "test content" $toUpperMethod = $demoStr.ToUpper & $toUpperMethod # 输出 TEST CONTENT - 存在多个重载的方法会自动根据传入的参数类型、数量匹配对应重载,逻辑和直接调用完整方法名完全一致
- 如果需要固定部分参数,可以封装为匿名函数实现自定义逻辑:
# 自定义检测逻辑:非空+长度大于3 $customCheck = { param([string]$inputStr) return -not [string]::IsNullOrWhiteSpace($inputStr) -and $inputStr.Length -gt 3 } & $customCheck "12" # 输出 False & $customCheck "1234" # 输出 True
内容的提问来源于stack exchange,提问作者immobile2
相关产品推荐
相关产品推荐

