@@ -59,8 +59,7 @@ public static IObservable<IObservedChange<TSender, TValue>> ObservableForPropert
5959 This ,
6060 propertyNames ,
6161 beforeChange ,
62- skipInitial
63- ) ;
62+ skipInitial ) ;
6463 }
6564
6665 /// <summary>
@@ -83,8 +82,6 @@ public static IObservable<IObservedChange<TSender, object>> ObservableForPropert
8382 bool skipInitial = true )
8483 {
8584 var propertyNames = new LinkedList < string > ( property ) ;
86- var subscriptions = new LinkedList < IDisposable > ( propertyNames . Select ( x => ( IDisposable ) null ) ) ;
87- var ret = new Subject < IObservedChange < TSender , object > > ( ) ;
8885
8986 if ( This == null ) {
9087 throw new ArgumentNullException ( "Sender" ) ;
@@ -109,37 +106,33 @@ public static IObservable<IObservedChange<TSender, object>> ObservableForPropert
109106 This ,
110107 propertyNames ,
111108 beforeChange ,
112- skipInitial
113- ) ;
114-
109+ skipInitial ) ;
115110 }
116111
117112
118- private static IObservedChange < object , object >
119- observedChangeFor ( string propertyName , IObservedChange < object , object > sourceChange )
113+ static IObservedChange < object , object > observedChangeFor ( string propertyName , IObservedChange < object , object > sourceChange )
120114 {
121- var p = new ObservedChange < object , object > ( )
122- { Sender = sourceChange . Value
123- , PropertyName = propertyName
115+ var p = new ObservedChange < object , object > ( ) {
116+ Sender = sourceChange . Value ,
117+ PropertyName = propertyName ,
124118 } ;
125119
126- if ( sourceChange . Value == null )
127- {
120+ if ( sourceChange . Value == null ) {
128121 return p ;
129122 }
130123
131124 return p . fillInValue ( ) ;
132125 }
133126
134- private static IObservable < IObservedChange < object , object > >
135- nestedObservedChanges ( string propertyName , IObservedChange < object , object > sourceChange , bool beforeChange )
127+ static IObservable < IObservedChange < object , object > > nestedObservedChanges ( string propertyName , IObservedChange < object , object > sourceChange , bool beforeChange )
136128 {
137129 // Make sure a change at a root node propogates events down
138130 var kicker = observedChangeFor ( propertyName , sourceChange ) ;
139131
140132 // Handle null values in the chain
141- if ( sourceChange . Value == null )
133+ if ( sourceChange . Value == null ) {
142134 return Observable . Return ( kicker ) ;
135+ }
143136
144137 // Handle non null values in the chain
145138 return notifyForProperty ( sourceChange . Value , propertyName , beforeChange )
@@ -148,45 +141,38 @@ private static IObservable<IObservedChange<object, object>>
148141 }
149142
150143 public static IObservable < IObservedChange < TSender , TValue > > SubscribeToExpressionChain < TSender , TValue > (
151- this TSender source ,
152- IEnumerable < string > propertyNames ,
153- bool beforeChange = false ,
154- bool skipInitial = true
155- )
144+ this TSender source ,
145+ IEnumerable < string > propertyNames ,
146+ bool beforeChange = false ,
147+ bool skipInitial = true )
156148 {
157149 var path = String . Join ( "." , propertyNames ) ;
158150
159- IObservable < IObservedChange < object , object > > notifier
160- = Observable . Return
161- ( new ObservedChange < object , object > ( )
162- { Value = source } ) ;
151+ IObservable < IObservedChange < object , object > > notifier =
152+ Observable . Return ( new ObservedChange < object , object > ( ) { Value = source } ) ;
163153
164- notifier = propertyNames . Aggregate ( notifier , ( n , name ) => n
165- . Select ( y => nestedObservedChanges ( name , y , beforeChange ) )
166- . Switch ( ) ) ;
154+ notifier = propertyNames . Aggregate ( notifier ,
155+ ( n , name ) => n
156+ . Select ( y => nestedObservedChanges ( name , y , beforeChange ) )
157+ . Switch ( ) ) ;
167158
168- if ( skipInitial )
159+ if ( skipInitial ) {
169160 notifier = notifier . Skip ( 1 ) ;
161+ }
170162
171163 notifier = notifier . Where ( x => x . Sender != null ) ;
172164
173- var r = notifier . Select ( x => x . fillInValue ( ) )
174- . Select ( x => new ObservedChange < TSender , TValue > ( )
175- {
176- Sender = source
177- ,
178- PropertyName = path
179- ,
180- Value = ( TValue ) x . Value
165+ var r = notifier
166+ . Select ( x => x . fillInValue ( ) )
167+ . Select ( x => new ObservedChange < TSender , TValue > ( ) {
168+ Sender = source ,
169+ PropertyName = path ,
170+ Value = ( TValue ) x . Value ,
181171 } ) ;
182172
183-
184173 return r . DistinctUntilChanged ( x=> x . Value ) ;
185174 }
186175
187-
188-
189-
190176 static readonly MemoizingMRUCache < Tuple < Type , bool > , ICreatesObservableForProperty > notifyFactoryCache =
191177 new MemoizingMRUCache < Tuple < Type , bool > , ICreatesObservableForProperty > ( ( t , _ ) => {
192178 return RxApp . GetAllServices < ICreatesObservableForProperty > ( )
@@ -212,22 +198,6 @@ static IObservable<IObservedChange<object, object>> notifyForProperty(object sen
212198 return result . GetNotificationForProperty ( sender , propertyName , beforeChange ) ;
213199 }
214200
215- static string buildPropPathFromNodePtr ( LinkedListNode < string > node )
216- {
217- var ret = new StringBuilder ( ) ;
218- var current = node ;
219-
220- while ( current . Next != null ) {
221- ret . Append ( current . Value ) ;
222- ret . Append ( '.' ) ;
223- current = current . Next ;
224- }
225-
226- ret . Append ( current . Value ) ;
227- return ret . ToString ( ) ;
228- }
229-
230-
231201 /// <summary>
232202 /// ObservableForProperty returns an Observable representing the
233203 /// property change notifications for a specific property on a
@@ -289,4 +259,4 @@ public static IObservable<TRet> WhenAny<TSender, T1, T2, TRet>(this TSender This
289259 }
290260}
291261
292- // vim: tw=120 ts=4 sw=4 et :
262+ // vim: tw=120 ts=4 sw=4 et :
0 commit comments