我正在尝试使用一个用fluent-api模式编写的重试服务。方法返回服务并允许方法链接。然而,即使我使用了--〉'〈--我还是看到了很多错误,如下所示。x1c 0d1x有没有变通的方法或者其他的可能性可以不把所有的东西都写在一行中?(我已经检查了方法名和返回类型)(RetryService的入口点)
vc9ivgsu1#
不幸的是,about_Methods似乎没有对方法链接和解析规则进行说明。如果你想在新行上链接多个方法,那么点.必须在每条语句的末尾,然后允许换行。反勾号是不需要的。例如:
.
[powershell]::Create(). AddScript({ "hello $args" }). AddArgument('world'). Invoke()
9rygscc12#
链接方法调用的另一种方法是使用ForEach-Object命令(别名%),它依赖于-MemberName参数集(隐式地传递一个字符串作为第一个参数)。
ForEach-Object
%
-MemberName
**PowerShell 7+**甚至允许您在新行中写入管道符号|:
|
[powershell]::Create() |% AddScript { "hello $args" } |% AddArgument 'world' |% Invoke
如果有多个方法参数,则必须用,分隔它们(不需要括号)。对于PS 5及更低版本,您必须使用稍微不同的语法,因为管道符号必须与前一个命令在同一行上:
,
[powershell]::Create() | % AddScript { "hello $args" } | % AddArgument 'world' | % Invoke
这是一个比使用成员访问操作符.更好的方法吗?我不这么认为,这只是一个不同的方法。我认为它看起来比常规的PowerShell命令更一致。性能可能甚至比.更差,但对于高级代码来说,这可能无关紧要(我还没有测量)。
2条答案
按热度按时间vc9ivgsu1#
不幸的是,about_Methods似乎没有对方法链接和解析规则进行说明。如果你想在新行上链接多个方法,那么点
.
必须在每条语句的末尾,然后允许换行。反勾号是不需要的。例如:
9rygscc12#
链接方法调用的另一种方法是使用
ForEach-Object
命令(别名%
),它依赖于-MemberName
参数集(隐式地传递一个字符串作为第一个参数)。**PowerShell 7+**甚至允许您在新行中写入管道符号
|
:如果有多个方法参数,则必须用
,
分隔它们(不需要括号)。对于PS 5及更低版本,您必须使用稍微不同的语法,因为管道符号必须与前一个命令在同一行上:
这是一个比使用成员访问操作符
.
更好的方法吗?我不这么认为,这只是一个不同的方法。我认为它看起来比常规的PowerShell命令更一致。性能可能甚至比.
更差,但对于高级代码来说,这可能无关紧要(我还没有测量)。