繁体   English   中英

断开事件注册和订阅

[英]Disconnected Event registration and subscription

发布者公开了一个事件,多个订阅者可以参加

在订户端-> Publisher.OnSomeEvent + = Subscriber.CallMe()

后来,订阅者根据一些动态参数进行订阅

Publisher.Subscribe(参数)

Publisher.Unsubscribe(参数)

根据订阅者传递的参数,我希望发布者更新订阅者的订阅内容。

在内部,我可以维护订户到参数的映射,但是我的问题是,由于事件注册和订阅已断开连接,因此我无法在调用Subscribe时找到传递被调用方句柄的好方法(因此我可以维护映射订户->参数) /取消订阅通话。

为了使我的API简单,我不希望被调用者传递“ this”,而且由于内联问题,StackFrame和诊断API无法在发布模式下工作,所以我想不出更好的设计。

如果您可以提出实现此目标的更好方法,请感谢您的帮助?

这不是最优雅的解决方案,但是您可以让发布者通过一个接口与订阅者打交道,这将使发布者无需了解任何特定的订阅者实现。

例如

interface ISubscriber
{
object Arguments{get;}
}

这将使客户端API签名:

void Subscribe(ISubscriber subscriber)

当然,如果您不希望订阅者类型具有Arguments属性,则可能需要在单独的类型上实现接口。

如果您想过滤出版物,我说放弃事件,而使用类似

publisher.Subscribe(arguments, subscriber.CallMe)

退订你必须有标识的一些Dort的,可能是一个GUID,字符串,整数, this (不知道为什么你要避免它)...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM