Kon*_*zik 5 .net c# reactive-programming system.reactive
如何在不使用主题类或.NET 事件的情况下使此测试通过?
[TestClass]
public class ObservableTests
{
private readonly Subject<Unit> _subject = new Subject<Unit>();
[TestMethod]
public void ObservesMethodCall()
{
var eventCount = 0;
IObservable<Unit> observable = _subject.AsObservable();
observable.Subscribe(u => eventCount++);
Assert.AreEqual(0, eventCount);
Foo();
Assert.AreEqual(1, eventCount);
}
private void Foo()
{
_subject.OnNext(Unit.Default);
}
}
Run Code Online (Sandbox Code Playgroud)
我想避免使用主题,因为不推荐它们。我不想使用 .NET 事件,因为 RxNet 会取代它们。
相关问题:
每次调用新方法时都会触发一个事件
它假设我们无法修改正在调用的方法。
如何创建每次更新成员变量时发出的 Observable(onCompleted 从未调用)
使用主题。
有没有一种方法可以在不使用Subject的情况下创建由方法调用触发的可观察序列?
国家主题是要走的路。但是,我仍然想学习如何在没有主题的情况下做到这一点。
C# 中的 IObserver 和 IObservable for Observer vs Delegates, Events
展示了如何通过实现自定义来解决问题IObservable
这可能有点像吹毛求疵,但这不需要主题:
[TestClass]
public class ObservaleTests
{
private Action _action = null;
[TestMethod]
public void ObservesMethodCall()
{
var eventCount = 0;
IObservable<Unit> observable =
Observable.FromEvent(a => _action += a, a => _action -= a);
observable.Subscribe(u => eventCount++);
Assert.AreEqual(0, eventCount);
Foo();
Assert.AreEqual(1, eventCount);
}
private void Foo()
{
_action();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2279 次 |
| 最近记录: |