reactiveui/ReactiveUI — pull request #448 by jlaanstra (2013-12-16 13:19:05+00:00)
Title: RxUI6: Additional interfaces cleanup

This PR removes the untyped `IReactiveNotifyPropertyChanged`, `IReactiveNotifyCollectionItemChanged`, `IReactiveNotifyCollectionChanged` interfaces and makes `ObservedChange` immutable and continuing the cleanup started in #432.

## What is this PR changing?

- No more untyped interfaces that have typed equivalents. The untyped equivalents were not used much anymore.
- `ReactiveObject` is now `ReactiveObject` where T should be a `ReactiveObject`. This change is necessary to allow `ReactiveObject` to raise strongly typed changing and changed events.
- `ObservedChange` is immutable. This removes `fillInValue()` which was using a cast that was not type safe. Almost all instances of `fillInValue()` could be written without.

## Other small fixes

- `IReactiveDerivedList`is now also covariant.
- `IRoutingState`and `IRoutableViewModel` no longer inherit `IReactiveNotifyPropertyChanged`. I believe this should not be part of their contract anyway.

## TODO

- [ ] Understand how `SubscribeToExpressionChain` works, especially the Aggregate part. Hopefully @paulcbetts explain this.