具有 public Notify<T>(T 值) 方法的可观察子类

Observable subclass with public Notify<T>(T value) method

是否有 Observable<T> class 的子 class 公开访问 Notify<T>(T value) 方法(或访问 Notifier,扩展方法)以便我们可以临时调用 observable.Notify(t),从而通知所有订阅(OnNext 在同一线程上调用)。

我对FromEventPattern不感兴趣。

ISubject<T>接口继承了IObservable<T>IObserver<T>

var subject = new Subject<string>();
subject.Subscribe(text => Console.WriteLine(text));
subject.OnNext("Hello");
subject.OnNext("World!");

IObserver<T>.OnNext 本质上是您的 Notify 方法。

更多阅读:

你当然可以使用 Subject<string> 来提供一个对象,它是一个观察者(即你可以调用 .OnNext(string))并且是一个可以订阅的可观察对象。

唯一的缺点是任何可以访问您的 Subject<string> 的代码也可以调用 .OnCompleted().OnError(...) 并破坏您订阅者的代码。

另一种方法是这样做:

Action<string> notify = null;

var observable = Observable.FromEvent<string>(h => notify += h, h => notify -= h);

var subscription = observable.Subscribe(x => Console.WriteLine(x));

notify("Hello");

你现在有一个简单的 Action<string> 委托,你可以调用它来推送一个值,只要你保持订阅有效,客户端就不能通过对 .OnCompleted() 的恶意调用来终止你的程序或 .OnError(...).