迭代 class 的静态属性
Iterate over static properties of a class
要访问静态方法,我们使用
[namespace.ClassName]::MethodName()
对于静态属性,我们使用
[namespace.ClassName]::Property
如何遍历此 class 中的所有静态属性?
$list = [namespace.ClassName] | Get-Member -Static -MemberType Property
Returns 我是所有静态属性的列表,但我如何使用它,即访问它的值。
如果我想将变量传递给方法,我该怎么做? $list[0]
无效。
这应该在 Name
属性 上使用 foreach
循环。
$class = [namespace.ClassName]
$list = $class | Get-Member -Static -MemberType Property
$list | select -expand Name | foreach {
"$_ = $($class::$_)"
}
请注意,如果需要,您可以通过更改 $class
变量来迭代 classes。
以[Math]
class为例:
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
要访问静态方法,我们使用
[namespace.ClassName]::MethodName()
对于静态属性,我们使用
[namespace.ClassName]::Property
如何遍历此 class 中的所有静态属性?
$list = [namespace.ClassName] | Get-Member -Static -MemberType Property
Returns 我是所有静态属性的列表,但我如何使用它,即访问它的值。
如果我想将变量传递给方法,我该怎么做? $list[0]
无效。
这应该在 Name
属性 上使用 foreach
循环。
$class = [namespace.ClassName]
$list = $class | Get-Member -Static -MemberType Property
$list | select -expand Name | foreach {
"$_ = $($class::$_)"
}
请注意,如果需要,您可以通过更改 $class
变量来迭代 classes。
以[Math]
class为例:
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