[英]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.