我正在直接使用反应式扩展(Rx)主题作为 C# 事件的替代,如下所示:
注意,我从未在主题上调用OnCompleted。MyClass 是否应该实现 IDisposable 并调用 this.subject.Dispose?这意味着使用 Subject 的任何实现都应该实现 IDisposable。
我之所以问这个问题是因为 IDisposable 模式有点像一种疾病,如果一个东西实现了它,使用它的一切都必须实现它。
public class MyClass
{
private Subject<string> subject;
public IObservable<string> WhenSomethingHappened
{
get { return this.subject.AsObservable(); }
}
private void OnSomethingHappened(string something)
{
this.subject.OnNext(something);
}
}
注意,我从未在主题上调用OnCompleted。MyClass 是否应该实现 IDisposable 并调用 this.subject.Dispose?这意味着使用 Subject 的任何实现都应该实现 IDisposable。
我之所以问这个问题是因为 IDisposable 模式有点像一种疾病,如果一个东西实现了它,使用它的一切都必须实现它。