要访问静态方法,我们使用
[namespace.ClassName]::MethodName()
对于我们使用的静态属性
[namespace.ClassName]::Property
如何遍历此类中的所有静态属性?
$list = [namespace.ClassName] | Get-Member -Static -MemberType Property
返回所有静态属性的列表,但是我如何使用它,即访问它的值。
如果我想将变量传递给方法,我该怎么办? $list[0]
不起作用。
答案 0 :(得分:3)
这应该适用于foreach
属性的Name
循环。
$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
答案 1 :(得分:2)
这与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