我正在使用“数组列表”来构建一系列日志项,以便以后进行日志记录。可以处理,但是Add方法将当前索引发送到管道。我可以这样发送到$ null来解决这个问题
$strings.Add('junk') > $null
但是我想知道是否存在某种机制可以全局更改Add方法的行为。目前,我确实有成千上万个> $null
声誉,这很丑陋。尤其是当我忘记一个。
我真的很想看到超越所有自动流水线的某种全局变量。编写大型脚本时,我想有意地发送到管道,因为意外的自动发送到管道是我总错误的很大一部分,也是最难发现的。
答案 0 :(得分:0)
您可以使用自定义ArrayList
方法将Add()
包装在自定义对象中。
$log = New-Object -Type PSObject -Property @{
Log = New-Object Collections.ArrayList
}
$log | Add-Member -Type ScriptMethod -Name Add -Value {
Param(
[Parameter(Mandatory=$true)]
[string]$Message
)
$this.Log.Add($Message) | Out-Null
}
$log.Log.Add('some message') # output on this is suppressed