2016-04-13 27 views
1

私はクラス関数内で共通のプロパティにアクセスする必要があります。残念ながら、他の関数ではクラス外にアクセスする必要があります。私はクラスの一部としてmy_function$myvarにアクセスしようとするとpowershellクラス内のプロパティへのアクセス

例えば

Class Myclass { 
    [Void]my_function(){ 
     $file_location = "$myvar" 
    } 
} 

properties { # some props 
    $myvar = "somefile.txt" 
} 

function do_things{ 
    echo $myvar 
} 

、私は変数ではないとして理にかなっている解析エラー「変数がメソッドで定義されていません」を取得しますクラスで宣言されていますが、プロパティブロック内のものが使用可能であるとは思います。

私が気づいていないことがあり、私がこれを行うことを可能にするドキュメンテーションで見つけることができないことが期待されています。クラス関数内でプロパティを使用できない

私のクラスには、[MyOtherClass]::static_variable_nameを実行することで、スクリプト内の他の場所にアクセスできるので、静的変数が定義されている別のクラスから継承することができます。どうすればいいですか?

助言してください

+1

'$ FILE_LOCATION = Get-Variable myvar -ValueOnly' – PetSerAl

+0

$ myvarではなくなぜ動作するのか説明できるリソースがありますか?また、これで回答を作成すると、それをマークすることができます。ありがとう! – Kneemin

答えて

1

私はrefを提供できません私はPowerShellのブログを読んで覚えています。この機能の目的は、PowerShellクラスをより自己完結型にして、変数名のスペルミスなどのエラーを早期にキャッチすることです。

パーサーでは、globalまたはscriptスコープの接頭辞を付けない限り、クラスメソッド本体の任意の変数を直接参照することはできません。しかし、明らかに、他の方法で変数を参照するのを防ぐための技術的な制限はありませんでした。ネストされたスクリプトブロックが分析されていないので、

Get-Variable myvar -ValueOnly 

をそして、あなたもこれを行うことができます:だから

つまり、あなたはあなたのための変数の値を読み取るためにGet-Variableを依頼することができ

&{$myvar} 
関連する問題