• clr via c# 事件


    1,定义需要发送给事件接收者的附加信息的类

    class NewMailEventArgs:EventArgs//第一步:定义一个容纳给事件接受者信息的类。
        {
            public string From { get; }
            public string To { get; }
            public string Subject { get; }
            public NewMailEventArgs(string from,string to,string subject)
            {
                this.From = from;
                this.To = to;
                this.Subject = subject;
            }
        }

    2,定义事件成员

    class MailManager
        {
            public event EventHandler<NewMailEventArgs> NewMail;//首先,这是一个委托方法,原型是void MethodName(Object sender,NewMailEventArgs e)
            protected virtual void OnNewMail(NewMailEventArgs e)
            {
                e.Raise<NewMailEventArgs>(this, ref NewMail);
            }
    
            public void SimulateNewMail(string from,string to ,string subject)
            {
                OnNewMail(new NewMailEventArgs(from, to, subject));
            }
        }
    • 首先定义了一个事件成员 NewMail 并且,其类型是EventHandler<NewMailEventArgs>,该类型的原型是

                 void Delegate<T>(object sender,T e);

    •    然后,定义一个出发函数来触发事件。OnNewMail(NewMailEventArgs e),该事件,通过 NewMail(this,e) 来触发

      上面是一个扩展调用,实际上就是调用 NewMail(this,e);

      一个事件,在内部实际上生成了3个构造:

    • 一个私有的委托字段
    • 一个add_xxx方法
    • 一个remove_xxx方法
  • 相关阅读:
    Linux利用crontab命令定时任务
    Linux利用scp命令上传下载文件
    Linux利用ftp命令上传下载文件
    cmd杀死占用端口号的Java进程
    布隆过滤器
    redis缓存穿透、缓存击穿、缓存雪崩
    redis的主从复制master/slaver
    Redis的发布订阅Pub/Sub
    博客园隐藏反对按钮,并简单装饰推荐按钮
    redis事务
  • 原文地址:https://www.cnblogs.com/frogkiller/p/12264364.html
Copyright © 2020-2023  润新知