具有 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(...)
.
是否有 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(...)
.