public static IDisposable Bind <T>(IReactiveProperty <T> propertyA, IReactiveProperty <T> propertyB, BindingTypes bindingTypes = BindingTypes.Default, params IFilter <T>[] filters) { var propertyBBinding = propertyB .ApplyInputFilters(filters) .DistinctUntilChanged() .Subscribe(x => propertyA.Value = x); if (bindingTypes == BindingTypes.OneWay) { return(propertyBBinding); } var propertyABinding = propertyA .ApplyOutputFilters(filters) .DistinctUntilChanged() .Subscribe(x => propertyB.Value = x); return(new CompositeDisposable(propertyABinding, propertyBBinding)); }