首页 > 其他分享 >csharp 发布订阅 接口

csharp 发布订阅 接口

时间:2024-01-30 14:22:08浏览次数:22  
标签:订阅 void 接口 event 事件 csharp public MyEvent

event_learn\MyEvent.cs


namespace MyEvent;


public delegate void MyEventHandler(object sender, EventArgs e);


// 定义一个自定义的事件接口,包含一个事件声明
public interface IMyEvent
{
    // 使用 event 关键字声明一个事件,指定委托类型和事件名称
    event MyEventHandler MyEvent;
}

event_learn\Program.cs

// 定义一个实现事件接口的类
using MyEvent;

public class MyPublisher : IMyEvent
{
    // 声明一个与事件接口中相同名称和类型的事件
    public event MyEventHandler? MyEvent;

    // 定义一个触发事件的方法
    protected virtual void OnMyEvent()
    {
        // 检查事件是否有订阅者,如果有,就调用它们,并传递一个包含事件信息的对象
        MyEvent?.Invoke(this, EventArgs.Empty);
    }

    // 定义一个模拟的操作方法
    public void DoSomething()
    {
        // 在这里执行一些操作
        Console.WriteLine("Publisher: do something ... ");
        // 在操作完成后,调用触发事件的方法
        OnMyEvent();
    }

}


// 定义一个订阅者类,它有一个 HandleEvent 方法,它订阅了 MyEvent 事件
public class Subscriber
{
    // 定义一个事件处理程序方法,使用第二个参数的类型为自定义类的类型
    public void HandleEvent(object sender, EventArgs e)
    {
        // 根据数据执行操作,例如打印数据
        Console.WriteLine($"Subscriber: receive some thing , {e} ");
    }
}


class Program
{
    static void Main()
    {
        var publisher = new MyPublisher();
        var subscriber = new Subscriber();
        publisher.MyEvent += subscriber.HandleEvent!;
        publisher.DoSomething();

    }
}







标签:订阅,void,接口,event,事件,csharp,public,MyEvent
From: https://www.cnblogs.com/zhuoss/p/17997003

相关文章

  • csharp 发布订阅 传递参数
    event_learn\Program.cs//定义一个派生自EventArgs的自定义类,用于封装数据publicclassMyEventArgs:EventArgs{//定义一个公共的字符串属性,用于存储和获取数据publicDateTime?EmitDate{get;set;}}//定义一个发布者类,它有一个MyEvent事件public......
  • 接口地址忽略大小写
    最近在重写一个项目的接口,写完后运行测试发现接口存在大小写敏感的情况,但是我又找不到原因出在哪里,只能写一个配置类,通过实现WebMvcConfigurer接口的configurePathMatch方法,将AntPathMatcher的实例设置为路径匹配器,并将其设置为不区分大小写。这样,当请求的接口路径与定义的路径因为......
  • csharp 发布订阅 设计模式
    event_learn\Program.csusingSystem;//定义一个发布者类,它有一个MyEvent事件publicclassPublisher{//声明一个事件,使用EventHandler委托类型publiceventEventHandlerMyEvent;//定义一个触发事件的方法protectedvirtualvoidOnMyEvent()......
  • axios实现,在一个极短时间内,请求同一个接口,若传参完全一样,则使用浏览器中的缓存中的上
    axios实现,在一个极短时间内,请求同一个接口,若传参完全一样,则使用浏览器中的缓存中的上次的值。同时,上次的值应该在指定时间内可以自动清除。请写一个axios适配器。实现上述功能。在axios中,我们可以利用浏览器的缓存机制(HTTP缓存)来实现这个需求。不过,浏览器的HTTP缓存主要依赖于服......
  • 接口和抽象类的区别
    1)接口,它是一个规范、法规,你必须按照我的接口来做、来写才能调用我的方法、功能;接口是自上向下的方式,接口只管定义规范,而子类实现的时候,或者其它类调用的时候必须遵循我的标准2)抽象类是把某些类的一些特性,把他们的公共特征抽取出来之后变成了一个抽象类,如下图所示抽象类是自下......
  • 优雅的实现接口防刷,最强方案来了~!
    1前言本文为描述通过Interceptor以及Redis实现接口访问防刷Demo这里会通过逐步找问题,逐步去完善的形式展示2原理通过ip地址+uri拼接用以作为访问者访问接口区分通过在Interceptor中拦截请求,从Redis中统计用户访问接口次数从而达到接口防刷目的如下图所示3工程其中,Interceptor处代码......
  • 跟收费说拜拜,IDEA接口调试插件推荐
    IDEA插件市场中的API调试插件不是收费(FastRequest)就是不好用(apidoc、apidocx等等)今天给大家介绍一款国产的API调试插件:Apipost-Helper,完全免费且好看好用!这款插件由Apipost团队开发的,其官方介绍是:用于IDEA项目快速生成API文档,快速查询接口、接口代码功能,并支持在IDEA中进行API......
  • (2A)ADM7172ACPZ-2.5低压差线性稳压器 (LDO),AD5684BRUZ内置SPI接口的四通道、12位DAC
    一、ADM71726.5V、2A、超低噪声、高PSRR、快速瞬态响应CMOSLDOADM7172ACPZ-2.5超低噪声、高PSRR、快速瞬变响应CMOS低压差线性调节器采用2.3V到6.5V电压提供高达500mA的输出电流。这些高输出电流LDO适用于调节6V至1.2V供电轨的高性能模拟和混合信号电路。该......
  • 接口压力测试常用的性能指标,接口优化的点,分布式锁的方案常用的方案
    1.接口压力测试常用的性能指标2.接口优化的点3.实现分布式锁的方案常用的方案一.接口压力测试常用的性能指标:1、吞吐量吞吐量是系统每秒可以处理的事务数,也称为TPS(TransactionPerSecond)。比如:一次点播流程,从请求进入系统到视频画图显示出来这整个流程就是一次事务。所以......
  • 结合数据分析工具,挖掘淘宝API接口的商业价值
    随着电子商务的蓬勃发展,淘宝作为国内领先的电商平台,不仅为消费者提供了便捷的购物环境,同时也为开发者和数据分析师提供了丰富的数据资源。通过有效地调用淘宝API接口获取商品详情,再结合数据分析工具进行深入的数据挖掘,可以为商家、市场分析师及研究人员等带来巨大的商业价值。一、......