美文网首页
C#中如何定义和使用一个自定义事件

C#中如何定义和使用一个自定义事件

作者: Ritchie_Li | 来源:发表于2022-10-07 16:30 被阅读0次

1. 事件发布者

首先声明一个委托,该委托是事件发布者和订阅者连接的桥梁。

例如,使用关键字 delegate 定义一个委托

public delegate void MyDelegateHandler(Object sender,EventArgs args);

然后基本声明的委托定义一个事件,使用关键字event

public event MyDelegateHandler MyEvent;

最后发布事件

MyEvent?.Invoke();

2. 事件订阅者

定义事件实际执行的方法。

如下一个简单实例代码,演示如果自定义一个事件,如何使用事件,如果绑定事件的方法:

假定有这样的一个场景,员工离职,财务部需要接触该员工与该部们的关系,正常员工离职后,财务就不核算该员工的工资等费用了,IT也需要解除该员工的门禁等权限设置。

(1)定义EmployeeSeparator类,自定义一个无参数,无返回值的委托,以及基于该委托的事件

public class EmployeeSeparator

    {

        public delegate void EmployeeSeparatorEventHandler();

        public event EmployeeSeparatorEventHandler EmployeeSeparatored;

        public void Separate()

        {

            EmployeeSeparatored?.Invoke();

        }

    }

(2)定义Finance类,定义一个事件执行的方法

public class Finance

    {

        private readonly EmployeeSeparator employeeSeparator;

        public Finance(EmployeeSeparator employeeSeparator)

        {

            this.employeeSeparator = employeeSeparator;

        }

        public void EmployeeSeparatedEventHandler()

        {

            Console.WriteLine("Finance department: employee separation process related to finance");

        }

    }

(3)定义IT类,定义方法,在构造函数中绑定方法到事件

public class IT

    {

        private readonly EmployeeSeparator employeeSeparator;

        public IT(EmployeeSeparator employee)

        {

            this.employeeSeparator = employee;

            employee.EmployeeSeparatored += Employee_EmployeeSeparatored;

        }

        private void Employee_EmployeeSeparatored()

        {

            Console.WriteLine("IT deparatment: employee separation process related to IT");

        }

    }

(4)执行事件的发布订阅,执行

class Program

    {

        static void Main(string[] args)

        {

            EmployeeSeparator employeeSeparator=new EmployeeSeparator();

            Finance finance=new Finance(employeeSeparator);

            employeeSeparator.EmployeeSeparatored += finance.EmployeeSeparatedEventHandler;

            IT it= new IT(employeeSeparator);   

            employeeSeparator.Separate();

            Console.ReadKey();

        }

    }

财务部类的方法,在事件发布中订阅+=, IT部类在构造函数中传入事件发布类,在构造函数中,事件就绑定了方法。

运行结果入下:

Finance department: employee separation process related to finance

IT deparatment: employee separation process related to IT

演示的方法是无参数,无返回值情况,实际实际肯定不是这么简单,包含参数的,演示的代码帮助理解事件的发布和订阅使用而已。

相关文章

  • C#中如何定义和使用一个自定义事件

    1. 事件发布者 首先声明一个委托,该委托是事件发布者和订阅者连接的桥梁。 例如,使用关键字 delegate 定...

  • JS中的事件

    JS中的事件 一:自定义事件 1.使用Event自定义事件 使用Event接口,可以自定义事件。但是该接口无法在事...

  • C#中如何定义和使用一个自定义事件(3)

    上2篇文章都是不带事件参数的情况,如下事件演示如何自定义事件参数和使用自定义的事件参数。 1.定义事件参数 pub...

  • C#中如何定义和使用一个自定义事件(2)

    在上一个示例中,使用.NET 自定义的委托定义定义事件,不使用自定义委托。 (1) 事件发布者 使用系统的委托Ev...

  • vue组件的使用

    props和$emit 组件间通讯和自定义事件 父子通讯 props $emit兄弟组件或者隔代组件使用自定义事件...

  • angular6.x--其它

    EventEmitter实现自定义事件 通常,指令使用 Angular EventEmitter 来触发自定义事件...

  • 微信发送语音自定义view中的事件分发

    这里通过一个自定义view的例子来看事件分发在自定义view中的使用,其实大部分的Android框架下的事件分发的...

  • v-model

    使用自定义事件的表单输入组件自定义事件可以用来创建自定义的表单输入组件,使用 v-model 来进行数据双向绑定。...

  • CommonTopView常见的顶部view

    自定义属性 xml布局: 使用: 效果: 代码中设置相关点击事件:

  • 小程序组件间通信

    如何在组件中,调用父元素的方法 组件中可以往外边激活一个事件this.triggerEvent('自定义事件名')...

网友评论

      本文标题:C#中如何定义和使用一个自定义事件

      本文链接:https://www.haomeiwen.com/subject/ytjbartx.html