私は静的なクラスの内部で働くには$this
が必要です!それを達成する方法?回避策はありますか?私はクラスの文脈でGet-PSCallStack
の返品を分析して何も役に立たないことを見つけました。PowerShell静的クラスメソッドの中で現在のクラス名/オブジェクトを取得する方法は?
(a)ロギングと(b)同じクラスの他の静的メソッドを何度も何度も呼び出すことなく呼び出すためには、これが必要です。
サンプルコード(PowerShellのV5):
class foo {
static [void]DoSomething() {
[foo]::DoAnything() #works
#$this.DoAnything #not working
$static_this = [foo]
$static_this::DoAnything() #works
}
static [void]DoAnything() {
echo "Done"
}
}
[foo]::DoSomething()
Typo:_not available_ –
これは技術的にはこの質問と重複しています。http://stackoverflow.com/questions/2113069/c-sharp-getting-its-own-class-name PowerShellのようにC#で(静的メソッドのために)求めていることをするのは面倒です。 –
@Chris Dent: '[System.Reflection.MethodBase] :: GetCurrentMethod()。DeclaringType'は機能していないようです。 GetCurrentMethod()の結果は、メソッドが動的であることを示します。とにかくC#では、 'static void DoSomething(){DoAnything();}という完全な参照なしにDoSummethingからDoAnythingを呼び出すことができます。 } '。これはPowerShellにはありません。 –