リアクティブエクステンションについてmsdnを読んで、Observable.Createを使用してIObservableを実装すべきではないとの勧告を見つけました...これを読んだら、私のプロジェクトはすでにObservableImplementation<T>
クラスを持っていました。私はIObservableソースとして使用しましたが、どこでもObservablesにイベントを変換したいと思っていました。IObservable <T>を実装しないのはなぜですか?
私はSystem.ReactiveのAbstractObservable<T>
の実装を読みましたが、コードと私の間に大きな違いは見つかりませんでした。 IObservableの実装に何が問題になりますか?私はそれに自分のプロパティを追加することができます。...
私は何か間違っていたかどうか教えてください。
public sealed class ObservableImplementation<T> : IObservable<T>
{
class Subscription : IDisposable
{
private readonly Action _onDispose;
public Subscription(Action onDispose)
{
_onDispose = onDispose;
}
public void Dispose()
{
_onDispose();
}
}
public void Raise(T value)
{
_observers.ForEach(o => o.OnNext(value));
}
public void Completion()
{
_observers.ForEach(o => o.OnCompleted());
_observers.Clear();
}
private readonly List<IObserver<T>> _observers = new List<IObserver<T>>();
public IDisposable Subscribe(IObserver<T> observer)
{
var subscription = new Subscription(() => _observers.Remove(observer));
_observers.Add(observer);
return subscription;
}
public bool AnyObserverPresent { get { return _observers.Any(); } }
}
FYI、IObservable 'の具象クラスの実装がすでにあります':' Subject' –
...同様に、デリゲートベースの 'IDisposable'は' Disposable.Create'を使って作成することができます –
私は2番目のものを見つけましたが、置き換えを計画していますが、Subjectは単純なObservableそれは観測可能でもあるからです。いいえ? – TDaver