In c#think Reactive programming think of the IObserver and the IObservable as the 'reader' and 'writer' or, 'consumer' and 'publisher' interfaces.
While it may seem odd to have one type implementing both interfaces, it does make life easy. This is what subjects can do for you