我需要$this
在静态类中起作用!如何实现?有什么解决办法吗?我已经分析了类上下文中Get-PSCallStack
的返回值,但没有找到有用的信息。
我需要这个功能用于(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()
[System.Reflection.MethodBase]::GetCurrentMethod().DeclaringType
似乎无法正常工作。GetCurrentMethod()
的属性表明该方法是动态的。但是在 C# 中,您可以从DoSomething
调用DoAnything
而不需要完整引用,即static void DoSomething() { DoAnything(); }
。这正是我在 PowerShell 中所缺少的。 - Anton Krouglov[foo]::DoAnything()
更好的方法,因为单标签语句首先被执行为函数调用。这样做的唯一明显方法就是获取类型(GetCurrentMethod()),但它并没有包含一个类型。在引用PS类上的字段时,同样的问题存在(必须使用$ this变量)。 - Chris Dent