如何在 C# 中创建事件包装器

问题描述 投票:0回答:1

假设我有这门课:

public class someClassA
{
    Connector connector;

    public void SubscribeToEvent(IList<string> stockNames)
    {
        connector.OnEventReceived += SomeReceiverMethod;
    }

    private void SomeReceiverMethod(ReceivedData receivedData)
    {
        Console.WriteLine(receivedData);
    }
}

我想做的是在订阅的其他类中获取收到的数据

public class someClassB
{
   var classA = someClassA;
   someClassA.SomeSender += SomeReceiver;
}

我怎样才能从

SomeSender
实现
someClassB

c# .net events
1个回答
0
投票

有两种基本方法

  1. 提出新事件:
private void SomeReceiverMethod(ReceivedData receivedData)
{
    DataReceived?.Invoke(this, receivedData);
}
public event EventHandler<ReceivedData> DataReceived;
  1. 转发活动报名
// EventReceivedDelegate needs to be the same type as OnEventReceived 
public event EventReceivedDelegate EventReceived{
   add => connector.OnEventReceived += value;
   remove => connector.OnEventReceived -= value;
}

前者更灵活,因为它允许您在引发下一个事件之前对数据进行一些处理,以及更改类型等。但它需要更多代码

© www.soinside.com 2019 - 2024. All rights reserved.