2016-03-04 7 views
2

Чтобы получить доступ к статическому методу, мы используемперебрать статические свойства класса

[namespace.ClassName]::MethodName() 

и для статических свойств мы используем

[namespace.ClassName]::Property 

Как перебирать все статические свойства внутри этого класса ?

$list = [namespace.ClassName] | Get-Member -Static -MemberType Property 

Возвращает мне список всех статических свойств, но как я использую его, то есть доступ к его стоимости. Если я хочу передать переменную методу, как мне это сделать? $list[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 
+0

Благодарности @RyanBernrose – user3469799

2

Это, по существу, такие же, как ответ Райана 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 
Смежные вопросы