如何获取PowerShell静态类方法中的当前类名/对象?

时间:2016-08-20 15:35:07

标签: powershell reflection

我需要$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()

1 个答案:

答案 0 :(得分:1)

静态类没有this指针。见MSDN

  

静态成员函数,因为它们存在于类级别而不是   作为对象的一部分,没有这个指针。这是一个错误   请参考静态方法。

您必须按类名调用方法。