小编Pet*_*ete的帖子

从未在PowerShell 5中处理过C#事件

我正在尝试在.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)

.net c# powershell events

8
推荐指数
1
解决办法
1179
查看次数

标签 统计

.net ×1

c# ×1

events ×1

powershell ×1