将 Rx 与类型化消息代理一起使用
我有一个类似于 Caliburn 提供的类型化消息代理:
public interface IMessageBroker
{
void Publish<T>(T message);
IDisposable Subscribe<T>(Action<T> subscriber);
}
How can I to conversion subscriptions to IObservable?
我想要一个扩展方法,如下所示:
public static IObservable<T> Subscribe<T>(this IMessageBroker messageBroker)
{
var subject = new Subject<T>();
messageBroker.Subscribe<T>(subject.OnNext);
return subject;
}
此实现中的问题是我无法取消订阅,因此会泄漏。
也欢迎为 Subscribe 方法提供更好的名称。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
试试这个(未经测试):
您应该能够像这样使用:
Try this (untested):
Which you should be able to use like this:
试试这个(已测试)
您可以通过创建以下扩展方法来使用
Observable.Create
:注意:System.Reactive nuget 包没有
Observable.CreateWithDisposable
或没有 Rx (为什么?可能不需要依赖项):
Try this (Tested)
You can, using the the
Observable.Create
by creating the following extension method:Note: System.Reactive nuget package doesn´t have
Observable.CreateWithDisposable
Or without Rx (why? may be not wanting dependencies):