/*********** One-way binds ***********/ public static ISubscription bind <A>( this RxList <A> list, int max, string maxName, Fn <int, IObservable <Option <A> >, ISubscription> bindObservable ) { var subscription = list.rxSize.subscribe(size => { if (size > max) { throw new Exception(String.Format( "Max {0} {1} are supported in view, " + "but list size was exceeded.", max, maxName )); } }); var enumeration = Enumerable.Range(0, max).Select(i => { var observable = list.rxElement(i); return(bindObservable(i, observable)); }).ToList(); /** Eagerly evaluate to bind **/ return(new Subscription(() => { subscription.unsubscribe(); foreach (var s in enumeration) { s.unsubscribe(); } })); }