我有一个带参数的函数。然后创建一个对象,并将这些参数值指定为对象的属性。如何以编程方式获取已分配的任何参数值(无论是通过默认值,还是在运行时绑定)?下面是我的代码:
function New-Label {
param (
[string] $text,
[string] $name,
[boolean] $autoSize = $true,
[System.Drawing.Color] $foreColor = [System.Drawing.Color]::Black
)
$label = New-Object -TypeName System.Windows.Forms.Label
$label.AutoSize = $autoSize
$label.ForeColor = $foreColor
foreach ($pair in $PSBoundParameters.GetEnumerator()){
$label.$pair.Key = $pair.Value
}
return $label
}
对于运行时的用户绑定参数,$PSBoundParameters
可以正常工作,但我不喜欢因为AutoSize
和ForeColor
在运行时没有“绑定”而必须手动分配它们的属性。
更不用说,如果有大量的属性,它会变得乏味,简单地循环遍历它们会更有效。
是否有某种方法可以获得具有 assigned 值的任何参数(包括默认值-而不仅仅是 bound 参数)-这将是$autoSize
和$foreColor
,加上$text
和/或$name
,无论哪个都是由用户分配的。
1条答案
按热度按时间sycxhyv71#
在这种情况下,你绝对可以使用
$PSBoundParameters
,来检查哪些参数没有被绑定,并动态地将它们添加到$PSBoundParameters
中,你可以使用以下命令:另外,请查看从哈希表创建对象。