Как получить текущее имя класса / объект внутри метода статического класса PowerShell?

powershell reflection

977 просмотра

1 ответ

Мне нужно $thisработать внутри статического класса! Как этого добиться? Любое решение? Я проанализировал возвращение Get-PSCallStackв контексте класса и не нашел ничего полезного.

Мне это нужно для (а) ведения журнала и (б) вызова других статических методов того же класса без повторного упоминания его имени.

Пример кода (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()
Автор: Anton Krouglov Источник Размещён: 08.11.2019 11:30

Ответы (1)


1 плюс

Статические классы не имеют thisуказателя. Смотрите MSDN

Статические функции-члены, поскольку они существуют на уровне класса, а не как часть объекта, не имеют указателя this. Ошибочно ссылаться на это в статическом методе.

Вы должны вызвать метод по имени класса.

Автор: Paweł Dyl Размещён: 20.08.2016 03:48
Вопросы из категории :
32x32