gpt4 book ai didi

c# - 在运行时自动生成自定义事件

转载 作者:行者123 更新时间:2023-11-30 18:00:47 25 4
gpt4 key购买 nike

我有一个类可以通过我的应用程序和网络之间的套接字处理发送和接收。此类使用其他类,包括低级套接字连接类和 PDU 处理程序类,该类创建要发送的消息和处理接收到的数据。

现在我使用一个事件来通知我的类低级连接类有数据,我需要将该数据发送到 PDU 处理程序以转换为应用程序可以使用的信息,然后将数据交给应用程序。

为了将来的使用,我试图让这个类尽可能通用,这样在未来的服务器/客户端项目中,我只需要更改 PDU 处理程序来考虑可用的新操作以及如何处理数据。

一切都在进行中,现在我面临着将数据交还给应用程序的问题。为此,我的逻辑方法是让应用知道数据已准备好收集的事件。为此,我可以:

a) 有一个事件,让app通过操作码整理出是什么消息(可行)b) 每个操作代码有一个事件,并让应用程序订阅所有这些事件,这样一开始就知道它得到了什么

考虑到让事情变得通用的想法,以及 b 中所述的方法,是否有一种方法可以在运行时根据给定的委托(delegate)签名动态创建事件?

G。假设您在一个名为 MyOperation1 和 MyOperation2 的枚举中有操作码,并且您定义了一个委托(delegate),例如:

public delegate void PDUEventHandler(ParamType Param, [...]);

我想定义一个名为的事件:

public event PDUEventHandler MyOperation1;
public event PDUEventHandler MyOperation2;

但是如果我添加一个新的操作代码,我将需要一个事件。

这个事件可以动态创建还是我需要手动创建?如果我需要手动完成,那么我想单个事件会更好并处理应用端的事情。

最佳答案

也许您需要的是回调 - 本质上是您向事件处理程序传递一个委托(delegate),以便它在处理程序完成时执行。 Here's a stackoverflow thread to give you an idea

就事件处理程序和可重用性而言,也许您可​​以扩展 EventArgs 并将该委托(delegate)作为属性。

编辑:

我在想一个单一的 PDUEventHandler 具有公共(public)代码和运行自定义代码的“漏洞”。该自定义代码作为委托(delegate)(即方法)或什至类实例传递给处理程序。但是让我们稍微改变一下......

听起来你需要一个 factory .事实上,你实际上是在描述一个工厂。

从概念上讲,放弃将特殊操作码传递给 EventHandler 本身或具有多重签名 PDUEventHandler 的想法。

创建一个 PDUHandlerFactory 类。工厂返回自定义实例作为通用 PDUHandler 类引用。然后,调用者有一个指向工厂自定义实例的 PDUHandler 引用,而不是 PDUEventHander。

关于c# - 在运行时自动生成自定义事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9738095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com