我正在尝试为PowerShell编写一个二进制模块。但是我有一个问题,因为我想将常用功能导出到一个辅助方法中:
class Foo {
Bar DoBaz() {
if (bazzed) {
WriteWarning(this.ToString() + " already bazzed");
return baz;
}
// ...
}
}
这当然不起作用,因为WriteVerbose
是Cmdlet
的一种方法。我可以将其作为lambda传递,但这似乎是一种非常round回的方式。
答案 0 :(得分:2)
您必须将Cmdlet
(或更常见的是PSCmdlet
)实例传递给helper方法。这是一个例子
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);
}
}