SuperJMN SuperJMN - 1 year ago 44
C# Question

Take the last item pushed to an Observable (Sequence)

I have an

IObservable<Item>
insideĀ a class and I want to expose a read-only property that provides the last item pushed to the observable at a given time. So it will provide a single value of
Item
.

If no value has been pushed, then it will have to return a default value.

How can I do this without having to subscribe to the observable and having a "backing field"?

Answer Source

Assuming a hot observable.

For observable = source.Replay(1); observable.Connect();

Provide the value with:

public int Value => observable.Take(1).Amb(Observable.Return(defaultValue)).Wait();

This will return a default value in case no values have been pushed.

You want a transition from Reactive to state, so a backing field isn't a terrible option. You mentioned that you don't want to subscribe, but to observe anything: something, somewhere has to subscribe.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download