根据tutorial from microsoft,我想object of the class
时需要一个listen to a event
。 (C#.NET Core 2.2)
在没有调用对象实例的情况下是否可以实现?
我的情况是我在listener
上有RabbitMQ
听。当数据输入时,我通过很长的对象处理数据。
在此处进行描述:
Object a
创建新的Object b
并传递数据,Object b
创建Object c
并传递数据,...,Object z
正在保存数据。来自Object a
的我的监听器中的RabbidMQ
。
我需要了解保存在Object z
上的信息(有效,无效,部分有效)。
将我的回复信息重新发送到Object a
的最佳方法是什么?
答案 0 :(得分:0)
您发布的代码
这很简单Event Handler
,它是委托的包装,可以使它订阅任何数量的方法(Multi Cast delegate)
,而方法是使用事件中的所有方法调用事件时都将触发该方法。通过通知所有侦听器来执行链。
这种代码什么时候起作用
它只能在process / memory
内部工作,而不能在整个过程中工作,这意味着您不能跨网络调用或跨过程边界的呼叫订阅通知,因为这需要序列化/反序列化,即使您可以序列化对象/数据并重新创建,但不进行订阅逻辑/函数调用/逻辑处理
您的问题?
我不确定我是否掌握了所有内容,但是根据我的理解,您已经订阅了Rabbit MQ
,当有新数据传入时,它确实会通知您的代码,这是它们在网络上的客户端和服务器代码。 ,所有其他对象AZ都位于同一内存中,那么您需要做的就是将Event对象传递给所有相关对象,因为委托在内部的行为类似于函数指针,因此您可以在任何地方执行它,直到该点对象成为有效,它将执行与您期望的方法相同的方法,但是您需要传递相同的对象,如果状态很重要,则不能创建新对象并期望它维护状态。如果状态不是问题,则可以从任何地方创建对象,尽管通常在这种情况下状态是相关的。
针对整个网络
在MS世界中,Signal R
存在,但是有多种实现方式,例如Rabbit MQ,它们都提供了钩子来通过网络通知任何订户