Как `WriteVerbose` /` WriteDebug` / ... из классов, которые не наследуются от `Cmdlet` - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь написать бинарный модуль для PowerShell.Однако у меня есть проблема, поскольку я хотел бы экспортировать общие функции в вспомогательный метод:

class Foo {
    Bar DoBaz() {
        if (bazzed) {
            WriteWarning(this.ToString() + " already bazzed");
            return baz;
        }
        // ...
    }
}

Это, конечно, не работает, поскольку WriteVerbose - это метод Cmdlet.Я могу передать это как лямбду, но это, кажется, очень окольный способ сделать это.

1 Ответ

0 голосов
/ 26 сентября 2018

Вы должны передать экземпляр Cmdlet (или чаще PSCmdlet) вспомогательному методу.Вот пример

using System.Management.Automation;

[Cmdlet(VerbsDiagnostic.Test, "Cmdlet")]
public class TestCmdletCommand : PSCmdlet
{
    protected override void ProcessRecord()
    {
        HelperMethods.WriteFromHelper(this, "message");
    }
}

public static class HelperMethods
{
    public static void WriteFromHelper(PSCmdlet cmdlet, string message)
    {
        cmdlet.WriteVerbose(message);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...