Rx中Subject的真实生活用途是什么?我在101个样本中找到了一个样本,但我认为这并没有让我清楚地知道应该在哪里应用它。请在任何一篇文章中展示一些简单的样本,以展示Rx中的主题作品。我在windows phone的上下文中使用它。
答案 0 :(得分:7)
Subject<T>
是Rx的List<T>
- 它只是一个可以手动发出信号的IObservable:
var subj = new Subject<int>();
subj.Subscribe(Console.WriteLine);
subj.OnNext(4);
subj.OnNext(5);
subj.OnCompleted();
>>> 4
>>> 5
对于“包装”使用非Rx模式的异步方法(如回调或APM)非常有用。查看this example from my book。
答案 1 :(得分:1)
目前的指导是您应避免在代码库中使用主题。嗯,这是我的观点,我最近有一个Bart De Smet(Rx的作者)在口头上同意这一点。
我大多数时候看到主题的使用,它可以用Observable.Create&lt; T&gt;(IObserver&lt; T&gt;)或另一个工厂代替,例如FromEventPattern,Timer,FromAPM等...
请参阅我关于此事的博文:
http://www.introtorx.com/Content/v1.0.10621.0/02_KeyTypes.html
http://www.introtorx.com/Content/v1.0.10621.0/18_UsageGuidelines.html
本指南有两个很好的例外: