问题描述
private IObservable<AnotherClass> observable
'。
- 我想让此类作为观察者并监视上述属性的变化。
- 只要此属性发生更改,我都想调用onNext()。
- 我想在.onNext()中调用自定义method1()。像onNext(调用Method1(传递可观察的数据))。 由于这是一个密封的类,因此无法使用在许多示例中发现的Virtual onNext()。
我如何实现这些目标?
解决方法
执行IObserver<AnotherClass>
并订阅可观察的内容吗?
public sealed class AnObserver : IObserver<AnotherClass>
{
private readonly IObservable<AnotherClass> observable;
public AnObserver()
{
observable = ...;
observable.Subscribe(this);
}
void IObserver<AnotherClass>.OnCompleted() { }
void IObserver<AnotherClass>.OnError(Exception error) { }
void IObserver<AnotherClass>.OnNext(AnotherClass value)
{
Method1(value);
}
public void Method1(AnotherClass value)
{
...
}
}
,
这是我应对这种情况的方式。
public sealed class ThisClass : IDisposable
{
private readonly IObservable<AnotherClass> observable;
private readonly IDisposable subscription;
public ThisClass()
{
observable = ...;
subscription = observable.Subscribe(x => Method1(x));
}
private void Method1(AnotherClass value)
{
...
}
private bool disposedValue = false;
void Dispose(bool disposing)
{
if (!disposedValue)
{
if (disposing)
{
subscription.Dispose();
}
disposedValue = true;
}
}
public void Dispose()
{
Dispose(true);
}
}
这不会将任何不必要的东西暴露给外界,并且会清除处置。