循环访问类的静态属性
本文关键字:静态 属性 访问 循环 | 更新日期: 2023-09-27 18:37:22
要访问静态方法,我们使用
[namespace.ClassName]::MethodName()
对于静态属性,我们使用
[namespace.ClassName]::Property
如何循环访问此类中的所有静态属性?
$list = [namespace.ClassName] | Get-Member -Static -MemberType Property
返回所有静态属性的列表,但我如何使用它,即访问其值。如果我想将变量传递给方法,我该怎么做? $list[0]
不起作用。
这应该适用于 Name
属性上的 foreach
循环。
$class = [namespace.ClassName]
$list = $class | Get-Member -Static -MemberType Property
$list | select -expand Name | foreach {
"$_ = $($class::$_)"
}
请注意,如果需要,可以通过更改 $class
变量来迭代类。
以 [Math]
类为例:
PS> $class = [math]
PS> $class | Get-Member -Static -MemberType Property | select -expand Name | foreach { "$_ = $($class::$_)" }
E = 2.71828182845905
PI = 3.14159265358979
这基本上与 Ryan Bemrose 的答案相同,但编写为一个吐出对象的函数。
function Get-StaticProperties
{
Param (
[type]$Class
)
gm -InputObject $Class -Static -MemberType Property |
select -ExpandProperty Name | foreach {
New-Object PSObject -Property ([ordered]@{ Name=$_; Value=$Class::$_ })
}
}
然后,要调用它:
PS> Get-StaticProperties System.Math
Name Value
---- -----
E 2.71828182845905
PI 3.14159265358979