我正在尝试在.NET中创建一个PowerShell加载项,这将允许我访问某些Windows 10功能.我知道C#,但PowerShell对我来说相对较新.
我的所有函数调用和cmdlet都在工作.我可以让C#类从PowerShell做一些事情.让我振作起来的是事件提升和处理让C#代码回调.我现在已经有三个晚上了.
在线和在此处的示例总是显示计时器和文件系统观察者,或者有时是Windows表单.我从未见过使用某人自己编写的课程的例子.不确定在举起活动时是否需要一些糖,或其他东西.
我在代码和其他代码之间看到的主要区别是我有一个工厂类,它返回引发事件的对象的实例.我使用它而不是调用new-object.但是,PowerShell会识别该类型并很乐意在其上列出成员,因此我认为这不是问题.
我创建了一个简单的repro cmdlet和类,以及脚本.他们来了:
GetTestObject cmdlet
using System.Management.Automation;
namespace PeteBrown.TestFoo
{
[Cmdlet(VerbsCommon.Get, "TestObject")]
public class GetTestObject : PSCmdlet
{
protected override void ProcessRecord()
{
var test = new TestObject();
WriteObject(test);
}
}
}
Run Code Online (Sandbox Code Playgroud)
TestObject类
using System;
namespace PeteBrown.TestFoo
{
public class TestObject
{
public string Name { get; set; }
public event EventHandler FooEvent;
public void CauseFoo()
{
Console.WriteLine("c#: About to raise foo event.");
try
{
if (FooEvent != null)
FooEvent(this, EventArgs.Empty);
else
Console.WriteLine("c#: no handlers wired …Run Code Online (Sandbox Code Playgroud)