diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 751e37799..31089d902 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -27,7 +27,7 @@ - + diff --git a/src/ReactiveUI.Tests/API/ApiApprovalTests.ReactiveUI.DotNet8_0.verified.txt b/src/ReactiveUI.Tests/API/ApiApprovalTests.ReactiveUI.DotNet8_0.verified.txt index 2a283a3d7..197cb35c6 100644 --- a/src/ReactiveUI.Tests/API/ApiApprovalTests.ReactiveUI.DotNet8_0.verified.txt +++ b/src/ReactiveUI.Tests/API/ApiApprovalTests.ReactiveUI.DotNet8_0.verified.txt @@ -732,10 +732,10 @@ namespace ReactiveUI } public static class ReactiveNotifyPropertyChangedMixin { - public static System.IObservable> ObservableForProperty(this TSender? item, System.Linq.Expressions.Expression> property, bool beforeChange = false, bool skipInitial = true) { } + public static System.IObservable> ObservableForProperty(this TSender? item, System.Linq.Expressions.Expression> property, bool beforeChange = false, bool skipInitial = true, bool isDistinct = true) { } public static System.IObservable ObservableForProperty(this TSender? item, System.Linq.Expressions.Expression> property, System.Func selector, bool beforeChange = false) where TSender : class { } - public static System.IObservable> SubscribeToExpressionChain(this TSender? source, System.Linq.Expressions.Expression? expression, bool beforeChange = false, bool skipInitial = true, bool suppressWarnings = false) { } + public static System.IObservable> SubscribeToExpressionChain(this TSender? source, System.Linq.Expressions.Expression? expression, bool beforeChange = false, bool skipInitial = true, bool suppressWarnings = false, bool isDistinct = true) { } } [System.Runtime.Serialization.DataContract] public class ReactiveObject : ReactiveUI.IHandleObservableErrors, ReactiveUI.IReactiveNotifyPropertyChanged, ReactiveUI.IReactiveObject, Splat.IEnableLogger, System.ComponentModel.INotifyPropertyChanged, System.ComponentModel.INotifyPropertyChanging @@ -1023,49 +1023,49 @@ namespace ReactiveUI } public static class WhenAnyMixin { - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Func, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Func, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Func, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Func, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Linq.Expressions.Expression? property9, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Linq.Expressions.Expression? property9, System.Linq.Expressions.Expression? property10, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Linq.Expressions.Expression? property9, System.Linq.Expressions.Expression? property10, System.Linq.Expressions.Expression? property11, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Linq.Expressions.Expression? property9, System.Linq.Expressions.Expression? property10, System.Linq.Expressions.Expression? property11, System.Linq.Expressions.Expression? property12, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Func selector) { } - public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Func selector) { } - public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Func selector) { } - public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Func selector) { } - public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Func selector) { } - public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Func selector) { } - public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Func selector) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Func selector) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Func selector) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Func selector) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Func selector) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Func selector) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Func, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Func, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Func, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Func, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Linq.Expressions.Expression? property9, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Linq.Expressions.Expression? property9, System.Linq.Expressions.Expression? property10, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Linq.Expressions.Expression? property9, System.Linq.Expressions.Expression? property10, System.Linq.Expressions.Expression? property11, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Linq.Expressions.Expression? property9, System.Linq.Expressions.Expression? property10, System.Linq.Expressions.Expression? property11, System.Linq.Expressions.Expression? property12, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Func selector, bool isDistinct = true) { } + public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Func selector, bool isDistinct = true) { } + public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Func selector, bool isDistinct = true) { } + public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Func selector, bool isDistinct = true) { } + public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Func selector, bool isDistinct = true) { } + public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Func selector, bool isDistinct = true) { } + public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Func selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Func selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Func selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Func selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Func selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Func selector, bool isDistinct = true) { } } public static class WhenAnyObservableMixin { diff --git a/src/ReactiveUI.Tests/API/ApiApprovalTests.ReactiveUI.DotNet9_0.verified.txt b/src/ReactiveUI.Tests/API/ApiApprovalTests.ReactiveUI.DotNet9_0.verified.txt index 9db5df94a..d316746f0 100644 --- a/src/ReactiveUI.Tests/API/ApiApprovalTests.ReactiveUI.DotNet9_0.verified.txt +++ b/src/ReactiveUI.Tests/API/ApiApprovalTests.ReactiveUI.DotNet9_0.verified.txt @@ -732,10 +732,10 @@ namespace ReactiveUI } public static class ReactiveNotifyPropertyChangedMixin { - public static System.IObservable> ObservableForProperty(this TSender? item, System.Linq.Expressions.Expression> property, bool beforeChange = false, bool skipInitial = true) { } + public static System.IObservable> ObservableForProperty(this TSender? item, System.Linq.Expressions.Expression> property, bool beforeChange = false, bool skipInitial = true, bool isDistinct = true) { } public static System.IObservable ObservableForProperty(this TSender? item, System.Linq.Expressions.Expression> property, System.Func selector, bool beforeChange = false) where TSender : class { } - public static System.IObservable> SubscribeToExpressionChain(this TSender? source, System.Linq.Expressions.Expression? expression, bool beforeChange = false, bool skipInitial = true, bool suppressWarnings = false) { } + public static System.IObservable> SubscribeToExpressionChain(this TSender? source, System.Linq.Expressions.Expression? expression, bool beforeChange = false, bool skipInitial = true, bool suppressWarnings = false, bool isDistinct = true) { } } [System.Runtime.Serialization.DataContract] public class ReactiveObject : ReactiveUI.IHandleObservableErrors, ReactiveUI.IReactiveNotifyPropertyChanged, ReactiveUI.IReactiveObject, Splat.IEnableLogger, System.ComponentModel.INotifyPropertyChanged, System.ComponentModel.INotifyPropertyChanging @@ -1023,49 +1023,49 @@ namespace ReactiveUI } public static class WhenAnyMixin { - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Func, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Func, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Func, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Func, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Linq.Expressions.Expression? property9, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Linq.Expressions.Expression? property9, System.Linq.Expressions.Expression? property10, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Linq.Expressions.Expression? property9, System.Linq.Expressions.Expression? property10, System.Linq.Expressions.Expression? property11, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Linq.Expressions.Expression? property9, System.Linq.Expressions.Expression? property10, System.Linq.Expressions.Expression? property11, System.Linq.Expressions.Expression? property12, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Func selector) { } - public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Func selector) { } - public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Func selector) { } - public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Func selector) { } - public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Func selector) { } - public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Func selector) { } - public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Func selector) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Func selector) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Func selector) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Func selector) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Func selector) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Func selector) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Func, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Func, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Func, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Func, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Linq.Expressions.Expression? property9, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Linq.Expressions.Expression? property9, System.Linq.Expressions.Expression? property10, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Linq.Expressions.Expression? property9, System.Linq.Expressions.Expression? property10, System.Linq.Expressions.Expression? property11, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Linq.Expressions.Expression? property9, System.Linq.Expressions.Expression? property10, System.Linq.Expressions.Expression? property11, System.Linq.Expressions.Expression? property12, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Func selector, bool isDistinct = true) { } + public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Func selector, bool isDistinct = true) { } + public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Func selector, bool isDistinct = true) { } + public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Func selector, bool isDistinct = true) { } + public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Func selector, bool isDistinct = true) { } + public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Func selector, bool isDistinct = true) { } + public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Func selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Func selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Func selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Func selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Func selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Func selector, bool isDistinct = true) { } } public static class WhenAnyObservableMixin { diff --git a/src/ReactiveUI.Tests/API/ApiApprovalTests.ReactiveUI.Net4_7.verified.txt b/src/ReactiveUI.Tests/API/ApiApprovalTests.ReactiveUI.Net4_7.verified.txt index 62d6010bc..e0a664fba 100644 --- a/src/ReactiveUI.Tests/API/ApiApprovalTests.ReactiveUI.Net4_7.verified.txt +++ b/src/ReactiveUI.Tests/API/ApiApprovalTests.ReactiveUI.Net4_7.verified.txt @@ -710,10 +710,10 @@ namespace ReactiveUI } public static class ReactiveNotifyPropertyChangedMixin { - public static System.IObservable> ObservableForProperty(this TSender? item, System.Linq.Expressions.Expression> property, bool beforeChange = false, bool skipInitial = true) { } + public static System.IObservable> ObservableForProperty(this TSender? item, System.Linq.Expressions.Expression> property, bool beforeChange = false, bool skipInitial = true, bool isDistinct = true) { } public static System.IObservable ObservableForProperty(this TSender? item, System.Linq.Expressions.Expression> property, System.Func selector, bool beforeChange = false) where TSender : class { } - public static System.IObservable> SubscribeToExpressionChain(this TSender? source, System.Linq.Expressions.Expression? expression, bool beforeChange = false, bool skipInitial = true, bool suppressWarnings = false) { } + public static System.IObservable> SubscribeToExpressionChain(this TSender? source, System.Linq.Expressions.Expression? expression, bool beforeChange = false, bool skipInitial = true, bool suppressWarnings = false, bool isDistinct = true) { } } [System.Runtime.Serialization.DataContract] public class ReactiveObject : ReactiveUI.IHandleObservableErrors, ReactiveUI.IReactiveNotifyPropertyChanged, ReactiveUI.IReactiveObject, Splat.IEnableLogger, System.ComponentModel.INotifyPropertyChanged, System.ComponentModel.INotifyPropertyChanging @@ -1002,49 +1002,49 @@ namespace ReactiveUI } public static class WhenAnyMixin { - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Func, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Func, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Func, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Func, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Linq.Expressions.Expression? property9, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Linq.Expressions.Expression? property9, System.Linq.Expressions.Expression? property10, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Linq.Expressions.Expression? property9, System.Linq.Expressions.Expression? property10, System.Linq.Expressions.Expression? property11, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Linq.Expressions.Expression? property9, System.Linq.Expressions.Expression? property10, System.Linq.Expressions.Expression? property11, System.Linq.Expressions.Expression? property12, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Func selector) { } - public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Func selector) { } - public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Func selector) { } - public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Func selector) { } - public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Func selector) { } - public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Func selector) { } - public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Func selector) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Func selector) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Func selector) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Func selector) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Func selector) { } - public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Func selector) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Func, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Func, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAny(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Func, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Func, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Linq.Expressions.Expression? property9, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Linq.Expressions.Expression? property9, System.Linq.Expressions.Expression? property10, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Linq.Expressions.Expression? property9, System.Linq.Expressions.Expression? property10, System.Linq.Expressions.Expression? property11, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyDynamic(this TSender? sender, System.Linq.Expressions.Expression? property1, System.Linq.Expressions.Expression? property2, System.Linq.Expressions.Expression? property3, System.Linq.Expressions.Expression? property4, System.Linq.Expressions.Expression? property5, System.Linq.Expressions.Expression? property6, System.Linq.Expressions.Expression? property7, System.Linq.Expressions.Expression? property8, System.Linq.Expressions.Expression? property9, System.Linq.Expressions.Expression? property10, System.Linq.Expressions.Expression? property11, System.Linq.Expressions.Expression? property12, System.Func, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, ReactiveUI.IObservedChange, TRet> selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Func selector, bool isDistinct = true) { } + public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Func selector, bool isDistinct = true) { } + public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Func selector, bool isDistinct = true) { } + public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Func selector, bool isDistinct = true) { } + public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Func selector, bool isDistinct = true) { } + public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Func selector, bool isDistinct = true) { } + public static System.IObservable> WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Func selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Func selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Func selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Func selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Func selector, bool isDistinct = true) { } + public static System.IObservable WhenAnyValue(this TSender? sender, System.Linq.Expressions.Expression> property1, System.Linq.Expressions.Expression> property2, System.Linq.Expressions.Expression> property3, System.Linq.Expressions.Expression> property4, System.Linq.Expressions.Expression> property5, System.Linq.Expressions.Expression> property6, System.Linq.Expressions.Expression> property7, System.Linq.Expressions.Expression> property8, System.Linq.Expressions.Expression> property9, System.Linq.Expressions.Expression> property10, System.Linq.Expressions.Expression> property11, System.Linq.Expressions.Expression> property12, System.Func selector, bool isDistinct = true) { } } public static class WhenAnyObservableMixin { diff --git a/src/ReactiveUI/Mixins/ReactiveNotifyPropertyChangedMixin.cs b/src/ReactiveUI/Mixins/ReactiveNotifyPropertyChangedMixin.cs index d5c696eb3..60c084b64 100644 --- a/src/ReactiveUI/Mixins/ReactiveNotifyPropertyChangedMixin.cs +++ b/src/ReactiveUI/Mixins/ReactiveNotifyPropertyChangedMixin.cs @@ -34,18 +34,22 @@ public static class ReactiveNotifyPropertyChangedMixin /// The value type. /// The source object to observe properties of. /// An Expression representing the property (i.e. - /// 'x => x.SomeProperty.SomeOtherProperty'. + /// 'x => x.SomeProperty.SomeOtherProperty'. /// If True, the Observable will notify /// immediately before a property is going to change. /// If true, the Observable will not notify /// with the initial value. - /// An Observable representing the property change - /// notifications for the given property. + /// if set to true [is distinct]. + /// + /// An Observable representing the property change + /// notifications for the given property. + /// public static IObservable> ObservableForProperty( this TSender? item, Expression> property, bool beforeChange = false, - bool skipInitial = true) + bool skipInitial = true, + bool isDistinct = true) { property.ArgumentNullExceptionThrowIfNull(nameof(property)); @@ -68,7 +72,8 @@ public static IObservable> ObservableForPropert item, property.Body, beforeChange, - skipInitial); + skipInitial, + isDistinct); } /// @@ -104,24 +109,28 @@ public static IObservable ObservableForProperty( /// /// Creates a observable which will subscribe to the each property and sub property - /// specified in the Expression. eg It will subscribe to x => x.Property1.Property2.Property3 + /// specified in the Expression. eg It will subscribe to x => x.Property1.Property2.Property3 /// each property in the lambda expression. It will then provide updates to the last value in the chain. /// + /// The type of the origin of the expression chain. + /// The end value we want to subscribe to. /// The object where we start the chain. /// A expression which will point towards the property. /// If we are interested in notifications before the property value is changed. /// If we don't want to get a notification about the default value of the property. /// If true, no warnings should be logged. - /// The type of the origin of the expression chain. - /// The end value we want to subscribe to. - /// A observable which notifies about observed changes. + /// if set to true [is distinct]. + /// + /// A observable which notifies about observed changes. + /// /// If we cannot cast from the target value from the specified last property. public static IObservable> SubscribeToExpressionChain( this TSender? source, Expression? expression, bool beforeChange = false, bool skipInitial = true, - bool suppressWarnings = false) // TODO: Create Test + bool suppressWarnings = false, + bool isDistinct = true) // TODO: Create Test { IObservable> notifier = Observable.Return(new ObservedChange(null, null, source)); @@ -150,7 +159,12 @@ public static IObservable> SubscribeToExpressio return new ObservedChange(source!, expression, (TValue)val!); }); - return r.DistinctUntilChanged(x => x.Value); + if (isDistinct) + { + return r.DistinctUntilChanged(x => x.Value); + } + + return r; } private static IObservable> NestedObservedChanges(Expression expression, IObservedChange sourceChange, bool beforeChange, bool suppressWarnings) diff --git a/src/ReactiveUI/ReactiveUI.csproj b/src/ReactiveUI/ReactiveUI.csproj index 581126c91..16c989792 100644 --- a/src/ReactiveUI/ReactiveUI.csproj +++ b/src/ReactiveUI/ReactiveUI.csproj @@ -69,4 +69,7 @@ + + + \ No newline at end of file diff --git a/src/ReactiveUI/VariadicTemplates.cs b/src/ReactiveUI/VariadicTemplates.cs index 54b5c4910..bf6aebf72 100644 --- a/src/ReactiveUI/VariadicTemplates.cs +++ b/src/ReactiveUI/VariadicTemplates.cs @@ -19,604 +19,627 @@ using System.Linq.Expressions; -namespace ReactiveUI; - -/// Extension methods associated with the WhenAny/WhenAnyValue classes. -public static class WhenAnyMixin +namespace ReactiveUI { - /// - /// WhenAnyValue allows you to observe whenever the value of a - /// property on an object has changed, providing an initial value when - /// the Observable is set up, unlike ObservableForProperty(). Use this - /// method in constructors to set up bindings between properties that also - /// need an initial setup. - /// - /// The object where the property chain starts. - /// The first property chain to reference. This will be a expression pointing to a end property or field. - public static IObservable WhenAnyValue( - this TSender? sender, - Expression> property1) - { - return sender!.WhenAny(property1, (IObservedChange c1) => c1.Value); - } - - - - /// - /// WhenAnyValue allows you to observe whenever the value of one or more - /// properties on an object have changed, providing an initial value when - /// the Observable is set up, unlike ObservableForProperty(). Use this - /// method in constructors to set up bindings between properties that also - /// need an initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAnyValue( - this TSender? sender, - Expression> property1, - Func selector) - { - return sender!.WhenAny(property1, - (c1) => - selector(c1.Value)); - } + /// Extension methods associated with the WhenAny/WhenAnyValue classes. + public static class WhenAnyMixin + { + /// + /// WhenAnyValue allows you to observe whenever the value of a + /// property on an object has changed, providing an initial value when + /// the Observable is set up, unlike ObservableForProperty(). Use this + /// method in constructors to set up bindings between properties that also + /// need an initial setup. + /// + /// The object where the property chain starts. + /// The first property chain to reference. This will be a expression pointing to a end property or field. + /// if set to true [is distinct]. + public static IObservable WhenAnyValue( + this TSender? sender, + Expression> property1, + bool isDistinct = true) + { + return sender!.WhenAny(property1, (IObservedChange c1) => c1.Value, isDistinct); + } - /// - /// WhenAny allows you to observe whenever one or more properties on an - /// object have changed, providing an initial value when the Observable - /// is set up, unlike ObservableForProperty(). Use this method in - /// constructors to set up bindings between properties that also need an - /// initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAny( + + + /// + /// WhenAnyValue allows you to observe whenever the value of one or more + /// properties on an object have changed, providing an initial value when + /// the Observable is set up, unlike ObservableForProperty(). Use this + /// method in constructors to set up bindings between properties that also + /// need an initial setup. + /// + /// The object where the property chain starts. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. + public static IObservable WhenAnyValue( this TSender? sender, Expression> property1, - Func, TRet> selector) - { - return sender!.ObservableForProperty(property1, false, false).Select(selector); - } + Func selector, + bool isDistinct = true) + { + return sender!.WhenAny(property1, + (c1) => + selector(c1.Value), + isDistinct); + } + /// + /// WhenAny allows you to observe whenever one or more properties on an + /// object have changed, providing an initial value when the Observable + /// is set up, unlike ObservableForProperty(). Use this method in + /// constructors to set up bindings between properties that also need an + /// initial setup. + /// + /// The object where the property chain starts. + /// if set to true [is distinct]. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + public static IObservable WhenAny( + this TSender? sender, + Expression> property1, + Func, TRet> selector, + bool isDistinct = true) + { + return sender!.ObservableForProperty(property1, false, false, isDistinct).Select(selector); + } - /// - /// WhenAny allows you to observe whenever one or more properties on an - /// object have changed, providing an initial value when the Observable - /// is set up, unlike ObservableForProperty(). Use this method in - /// constructors to set up bindings between properties that also need an - /// initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAnyDynamic( - this TSender? sender, - Expression? property1, - Func, TRet> selector) - { - return ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property1, false, false).Select(selector); - } - - /// - /// WhenAnyValue allows you to observe whenever the value of one or more - /// properties on an object have changed, providing an initial value when - /// the Observable is set up, unlike ObservableForProperty(). Use this - /// method in constructors to set up bindings between properties that also - /// need an initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - public static IObservable<(T1,T2)> WhenAnyValue( - this TSender? sender, - Expression> property1, - Expression> property2 - ) - { - return sender!.WhenAny(property1, property2, - (c1, c2) => - (c1.Value, c2.Value)); - } - - /// - /// WhenAnyValue allows you to observe whenever the value of one or more - /// properties on an object have changed, providing an initial value when - /// the Observable is set up, unlike ObservableForProperty(). Use this - /// method in constructors to set up bindings between properties that also - /// need an initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAnyValue( - this TSender? sender, - Expression> property1, - Expression> property2, - Func selector) - { - return sender!.WhenAny(property1, property2, - (c1, c2) => - selector(c1.Value, c2.Value)); - } - /// - /// WhenAny allows you to observe whenever one or more properties on an - /// object have changed, providing an initial value when the Observable - /// is set up, unlike ObservableForProperty(). Use this method in - /// constructors to set up bindings between properties that also need an - /// initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAny( + /// + /// WhenAny allows you to observe whenever one or more properties on an + /// object have changed, providing an initial value when the Observable + /// is set up, unlike ObservableForProperty(). Use this method in + /// constructors to set up bindings between properties that also need an + /// initial setup. + /// + /// The object where the property chain starts. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. + public static IObservable WhenAnyDynamic( + this TSender? sender, + Expression? property1, + Func, TRet> selector, + bool isDistinct = true) + { + return ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property1, false, false, isDistinct: isDistinct).Select(selector); + } + + /// + /// WhenAnyValue allows you to observe whenever the value of one or more + /// properties on an object have changed, providing an initial value when + /// the Observable is set up, unlike ObservableForProperty(). Use this + /// method in constructors to set up bindings between properties that also + /// need an initial setup. + /// + /// The object where the property chain starts. + /// if set to true [is distinct]. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + public static IObservable<(T1,T2)> WhenAnyValue( + this TSender? sender, + Expression> property1, + Expression> property2 + , + bool isDistinct = true) + { + return sender!.WhenAny(property1, property2, + (c1, c2) => + (c1.Value, c2.Value), + isDistinct); + } + + /// + /// WhenAnyValue allows you to observe whenever the value of one or more + /// properties on an object have changed, providing an initial value when + /// the Observable is set up, unlike ObservableForProperty(). Use this + /// method in constructors to set up bindings between properties that also + /// need an initial setup. + /// + /// The object where the property chain starts. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. + public static IObservable WhenAnyValue( this TSender? sender, Expression> property1, Expression> property2, - Func, IObservedChange, TRet> selector) - { - return Observable.CombineLatest( - sender!.ObservableForProperty(property1, false, false), - sender!.ObservableForProperty(property2, false, false), - selector - ); - } + Func selector, + bool isDistinct = true) + { + return sender!.WhenAny(property1, property2, + (c1, c2) => + selector(c1.Value, c2.Value), + isDistinct); + } + /// + /// WhenAny allows you to observe whenever one or more properties on an + /// object have changed, providing an initial value when the Observable + /// is set up, unlike ObservableForProperty(). Use this method in + /// constructors to set up bindings between properties that also need an + /// initial setup. + /// + /// The object where the property chain starts. + /// if set to true [is distinct]. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + public static IObservable WhenAny( + this TSender? sender, + Expression> property1, + Expression> property2, + Func, IObservedChange, TRet> selector, + bool isDistinct = true) + { + return Observable.CombineLatest( + sender!.ObservableForProperty(property1, false, false, isDistinct), + sender!.ObservableForProperty(property2, false, false, isDistinct), + selector + ); + } - /// - /// WhenAny allows you to observe whenever one or more properties on an - /// object have changed, providing an initial value when the Observable - /// is set up, unlike ObservableForProperty(). Use this method in - /// constructors to set up bindings between properties that also need an - /// initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAnyDynamic( - this TSender? sender, - Expression? property1, - Expression? property2, - Func, IObservedChange, TRet> selector) - { - return Observable.CombineLatest( - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property1, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property2, false, false), - selector - ); - } - - /// - /// WhenAnyValue allows you to observe whenever the value of one or more - /// properties on an object have changed, providing an initial value when - /// the Observable is set up, unlike ObservableForProperty(). Use this - /// method in constructors to set up bindings between properties that also - /// need an initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - public static IObservable<(T1,T2,T3)> WhenAnyValue( - this TSender? sender, - Expression> property1, - Expression> property2, - Expression> property3 - ) - { - return sender!.WhenAny(property1, property2, property3, - (c1, c2, c3) => - (c1.Value, c2.Value, c3.Value)); - } - - /// - /// WhenAnyValue allows you to observe whenever the value of one or more - /// properties on an object have changed, providing an initial value when - /// the Observable is set up, unlike ObservableForProperty(). Use this - /// method in constructors to set up bindings between properties that also - /// need an initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAnyValue( - this TSender? sender, - Expression> property1, - Expression> property2, - Expression> property3, - Func selector) - { - return sender!.WhenAny(property1, property2, property3, - (c1, c2, c3) => - selector(c1.Value, c2.Value, c3.Value)); - } - /// - /// WhenAny allows you to observe whenever one or more properties on an - /// object have changed, providing an initial value when the Observable - /// is set up, unlike ObservableForProperty(). Use this method in - /// constructors to set up bindings between properties that also need an - /// initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAny( + /// + /// WhenAny allows you to observe whenever one or more properties on an + /// object have changed, providing an initial value when the Observable + /// is set up, unlike ObservableForProperty(). Use this method in + /// constructors to set up bindings between properties that also need an + /// initial setup. + /// + /// The object where the property chain starts. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. + public static IObservable WhenAnyDynamic( + this TSender? sender, + Expression? property1, + Expression? property2, + Func, IObservedChange, TRet> selector, + bool isDistinct = true) + { + return Observable.CombineLatest( + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property1, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property2, false, false, isDistinct: isDistinct), + selector + ); + } + + /// + /// WhenAnyValue allows you to observe whenever the value of one or more + /// properties on an object have changed, providing an initial value when + /// the Observable is set up, unlike ObservableForProperty(). Use this + /// method in constructors to set up bindings between properties that also + /// need an initial setup. + /// + /// The object where the property chain starts. + /// if set to true [is distinct]. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + public static IObservable<(T1,T2,T3)> WhenAnyValue( + this TSender? sender, + Expression> property1, + Expression> property2, + Expression> property3 + , + bool isDistinct = true) + { + return sender!.WhenAny(property1, property2, property3, + (c1, c2, c3) => + (c1.Value, c2.Value, c3.Value), + isDistinct); + } + + /// + /// WhenAnyValue allows you to observe whenever the value of one or more + /// properties on an object have changed, providing an initial value when + /// the Observable is set up, unlike ObservableForProperty(). Use this + /// method in constructors to set up bindings between properties that also + /// need an initial setup. + /// + /// The object where the property chain starts. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. + public static IObservable WhenAnyValue( this TSender? sender, Expression> property1, Expression> property2, Expression> property3, - Func, IObservedChange, IObservedChange, TRet> selector) - { - return Observable.CombineLatest( - sender!.ObservableForProperty(property1, false, false), - sender!.ObservableForProperty(property2, false, false), - sender!.ObservableForProperty(property3, false, false), - selector - ); - } + Func selector, + bool isDistinct = true) + { + return sender!.WhenAny(property1, property2, property3, + (c1, c2, c3) => + selector(c1.Value, c2.Value, c3.Value), + isDistinct); + } + /// + /// WhenAny allows you to observe whenever one or more properties on an + /// object have changed, providing an initial value when the Observable + /// is set up, unlike ObservableForProperty(). Use this method in + /// constructors to set up bindings between properties that also need an + /// initial setup. + /// + /// The object where the property chain starts. + /// if set to true [is distinct]. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + public static IObservable WhenAny( + this TSender? sender, + Expression> property1, + Expression> property2, + Expression> property3, + Func, IObservedChange, IObservedChange, TRet> selector, + bool isDistinct = true) + { + return Observable.CombineLatest( + sender!.ObservableForProperty(property1, false, false, isDistinct), + sender!.ObservableForProperty(property2, false, false, isDistinct), + sender!.ObservableForProperty(property3, false, false, isDistinct), + selector + ); + } - /// - /// WhenAny allows you to observe whenever one or more properties on an - /// object have changed, providing an initial value when the Observable - /// is set up, unlike ObservableForProperty(). Use this method in - /// constructors to set up bindings between properties that also need an - /// initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAnyDynamic( - this TSender? sender, - Expression? property1, - Expression? property2, - Expression? property3, - Func, IObservedChange, IObservedChange, TRet> selector) - { - return Observable.CombineLatest( - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property1, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property2, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property3, false, false), - selector - ); - } - - /// - /// WhenAnyValue allows you to observe whenever the value of one or more - /// properties on an object have changed, providing an initial value when - /// the Observable is set up, unlike ObservableForProperty(). Use this - /// method in constructors to set up bindings between properties that also - /// need an initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - public static IObservable<(T1,T2,T3,T4)> WhenAnyValue( - this TSender? sender, - Expression> property1, - Expression> property2, - Expression> property3, - Expression> property4 - ) - { - return sender!.WhenAny(property1, property2, property3, property4, - (c1, c2, c3, c4) => - (c1.Value, c2.Value, c3.Value, c4.Value)); - } - - /// - /// WhenAnyValue allows you to observe whenever the value of one or more - /// properties on an object have changed, providing an initial value when - /// the Observable is set up, unlike ObservableForProperty(). Use this - /// method in constructors to set up bindings between properties that also - /// need an initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAnyValue( - this TSender? sender, - Expression> property1, - Expression> property2, - Expression> property3, - Expression> property4, - Func selector) - { - return sender!.WhenAny(property1, property2, property3, property4, - (c1, c2, c3, c4) => - selector(c1.Value, c2.Value, c3.Value, c4.Value)); - } - /// - /// WhenAny allows you to observe whenever one or more properties on an - /// object have changed, providing an initial value when the Observable - /// is set up, unlike ObservableForProperty(). Use this method in - /// constructors to set up bindings between properties that also need an - /// initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAny( + /// + /// WhenAny allows you to observe whenever one or more properties on an + /// object have changed, providing an initial value when the Observable + /// is set up, unlike ObservableForProperty(). Use this method in + /// constructors to set up bindings between properties that also need an + /// initial setup. + /// + /// The object where the property chain starts. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. + public static IObservable WhenAnyDynamic( + this TSender? sender, + Expression? property1, + Expression? property2, + Expression? property3, + Func, IObservedChange, IObservedChange, TRet> selector, + bool isDistinct = true) + { + return Observable.CombineLatest( + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property1, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property2, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property3, false, false, isDistinct: isDistinct), + selector + ); + } + + /// + /// WhenAnyValue allows you to observe whenever the value of one or more + /// properties on an object have changed, providing an initial value when + /// the Observable is set up, unlike ObservableForProperty(). Use this + /// method in constructors to set up bindings between properties that also + /// need an initial setup. + /// + /// The object where the property chain starts. + /// if set to true [is distinct]. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + public static IObservable<(T1,T2,T3,T4)> WhenAnyValue( + this TSender? sender, + Expression> property1, + Expression> property2, + Expression> property3, + Expression> property4 + , + bool isDistinct = true) + { + return sender!.WhenAny(property1, property2, property3, property4, + (c1, c2, c3, c4) => + (c1.Value, c2.Value, c3.Value, c4.Value), + isDistinct); + } + + /// + /// WhenAnyValue allows you to observe whenever the value of one or more + /// properties on an object have changed, providing an initial value when + /// the Observable is set up, unlike ObservableForProperty(). Use this + /// method in constructors to set up bindings between properties that also + /// need an initial setup. + /// + /// The object where the property chain starts. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. + public static IObservable WhenAnyValue( this TSender? sender, Expression> property1, Expression> property2, Expression> property3, Expression> property4, - Func, IObservedChange, IObservedChange, IObservedChange, TRet> selector) - { - return Observable.CombineLatest( - sender!.ObservableForProperty(property1, false, false), - sender!.ObservableForProperty(property2, false, false), - sender!.ObservableForProperty(property3, false, false), - sender!.ObservableForProperty(property4, false, false), - selector - ); - } + Func selector, + bool isDistinct = true) + { + return sender!.WhenAny(property1, property2, property3, property4, + (c1, c2, c3, c4) => + selector(c1.Value, c2.Value, c3.Value, c4.Value), + isDistinct); + } + /// + /// WhenAny allows you to observe whenever one or more properties on an + /// object have changed, providing an initial value when the Observable + /// is set up, unlike ObservableForProperty(). Use this method in + /// constructors to set up bindings between properties that also need an + /// initial setup. + /// + /// The object where the property chain starts. + /// if set to true [is distinct]. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + public static IObservable WhenAny( + this TSender? sender, + Expression> property1, + Expression> property2, + Expression> property3, + Expression> property4, + Func, IObservedChange, IObservedChange, IObservedChange, TRet> selector, + bool isDistinct = true) + { + return Observable.CombineLatest( + sender!.ObservableForProperty(property1, false, false, isDistinct), + sender!.ObservableForProperty(property2, false, false, isDistinct), + sender!.ObservableForProperty(property3, false, false, isDistinct), + sender!.ObservableForProperty(property4, false, false, isDistinct), + selector + ); + } - /// - /// WhenAny allows you to observe whenever one or more properties on an - /// object have changed, providing an initial value when the Observable - /// is set up, unlike ObservableForProperty(). Use this method in - /// constructors to set up bindings between properties that also need an - /// initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAnyDynamic( - this TSender? sender, - Expression? property1, - Expression? property2, - Expression? property3, - Expression? property4, - Func, IObservedChange, IObservedChange, IObservedChange, TRet> selector) - { - return Observable.CombineLatest( - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property1, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property2, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property3, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property4, false, false), - selector - ); - } - - /// - /// WhenAnyValue allows you to observe whenever the value of one or more - /// properties on an object have changed, providing an initial value when - /// the Observable is set up, unlike ObservableForProperty(). Use this - /// method in constructors to set up bindings between properties that also - /// need an initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - public static IObservable<(T1,T2,T3,T4,T5)> WhenAnyValue( - this TSender? sender, - Expression> property1, - Expression> property2, - Expression> property3, - Expression> property4, - Expression> property5 - ) - { - return sender!.WhenAny(property1, property2, property3, property4, property5, - (c1, c2, c3, c4, c5) => - (c1.Value, c2.Value, c3.Value, c4.Value, c5.Value)); - } - - /// - /// WhenAnyValue allows you to observe whenever the value of one or more - /// properties on an object have changed, providing an initial value when - /// the Observable is set up, unlike ObservableForProperty(). Use this - /// method in constructors to set up bindings between properties that also - /// need an initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAnyValue( - this TSender? sender, - Expression> property1, - Expression> property2, - Expression> property3, - Expression> property4, - Expression> property5, - Func selector) - { - return sender!.WhenAny(property1, property2, property3, property4, property5, - (c1, c2, c3, c4, c5) => - selector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value)); - } - /// - /// WhenAny allows you to observe whenever one or more properties on an - /// object have changed, providing an initial value when the Observable - /// is set up, unlike ObservableForProperty(). Use this method in - /// constructors to set up bindings between properties that also need an - /// initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAny( + /// + /// WhenAny allows you to observe whenever one or more properties on an + /// object have changed, providing an initial value when the Observable + /// is set up, unlike ObservableForProperty(). Use this method in + /// constructors to set up bindings between properties that also need an + /// initial setup. + /// + /// The object where the property chain starts. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. + public static IObservable WhenAnyDynamic( + this TSender? sender, + Expression? property1, + Expression? property2, + Expression? property3, + Expression? property4, + Func, IObservedChange, IObservedChange, IObservedChange, TRet> selector, + bool isDistinct = true) + { + return Observable.CombineLatest( + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property1, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property2, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property3, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property4, false, false, isDistinct: isDistinct), + selector + ); + } + + /// + /// WhenAnyValue allows you to observe whenever the value of one or more + /// properties on an object have changed, providing an initial value when + /// the Observable is set up, unlike ObservableForProperty(). Use this + /// method in constructors to set up bindings between properties that also + /// need an initial setup. + /// + /// The object where the property chain starts. + /// if set to true [is distinct]. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + public static IObservable<(T1,T2,T3,T4,T5)> WhenAnyValue( + this TSender? sender, + Expression> property1, + Expression> property2, + Expression> property3, + Expression> property4, + Expression> property5 + , + bool isDistinct = true) + { + return sender!.WhenAny(property1, property2, property3, property4, property5, + (c1, c2, c3, c4, c5) => + (c1.Value, c2.Value, c3.Value, c4.Value, c5.Value), + isDistinct); + } + + /// + /// WhenAnyValue allows you to observe whenever the value of one or more + /// properties on an object have changed, providing an initial value when + /// the Observable is set up, unlike ObservableForProperty(). Use this + /// method in constructors to set up bindings between properties that also + /// need an initial setup. + /// + /// The object where the property chain starts. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. + public static IObservable WhenAnyValue( this TSender? sender, Expression> property1, Expression> property2, Expression> property3, Expression> property4, Expression> property5, - Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector) - { - return Observable.CombineLatest( - sender!.ObservableForProperty(property1, false, false), - sender!.ObservableForProperty(property2, false, false), - sender!.ObservableForProperty(property3, false, false), - sender!.ObservableForProperty(property4, false, false), - sender!.ObservableForProperty(property5, false, false), - selector - ); - } + Func selector, + bool isDistinct = true) + { + return sender!.WhenAny(property1, property2, property3, property4, property5, + (c1, c2, c3, c4, c5) => + selector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value), + isDistinct); + } + /// + /// WhenAny allows you to observe whenever one or more properties on an + /// object have changed, providing an initial value when the Observable + /// is set up, unlike ObservableForProperty(). Use this method in + /// constructors to set up bindings between properties that also need an + /// initial setup. + /// + /// The object where the property chain starts. + /// if set to true [is distinct]. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + public static IObservable WhenAny( + this TSender? sender, + Expression> property1, + Expression> property2, + Expression> property3, + Expression> property4, + Expression> property5, + Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector, + bool isDistinct = true) + { + return Observable.CombineLatest( + sender!.ObservableForProperty(property1, false, false, isDistinct), + sender!.ObservableForProperty(property2, false, false, isDistinct), + sender!.ObservableForProperty(property3, false, false, isDistinct), + sender!.ObservableForProperty(property4, false, false, isDistinct), + sender!.ObservableForProperty(property5, false, false, isDistinct), + selector + ); + } - /// - /// WhenAny allows you to observe whenever one or more properties on an - /// object have changed, providing an initial value when the Observable - /// is set up, unlike ObservableForProperty(). Use this method in - /// constructors to set up bindings between properties that also need an - /// initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAnyDynamic( - this TSender? sender, - Expression? property1, - Expression? property2, - Expression? property3, - Expression? property4, - Expression? property5, - Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector) - { - return Observable.CombineLatest( - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property1, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property2, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property3, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property4, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property5, false, false), - selector - ); - } - - /// - /// WhenAnyValue allows you to observe whenever the value of one or more - /// properties on an object have changed, providing an initial value when - /// the Observable is set up, unlike ObservableForProperty(). Use this - /// method in constructors to set up bindings between properties that also - /// need an initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The 6 property chain to reference. This will be a expression pointing to a end property or field. - public static IObservable<(T1,T2,T3,T4,T5,T6)> WhenAnyValue( - this TSender? sender, - Expression> property1, - Expression> property2, - Expression> property3, - Expression> property4, - Expression> property5, - Expression> property6 - ) - { - return sender!.WhenAny(property1, property2, property3, property4, property5, property6, - (c1, c2, c3, c4, c5, c6) => - (c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value)); - } - - /// - /// WhenAnyValue allows you to observe whenever the value of one or more - /// properties on an object have changed, providing an initial value when - /// the Observable is set up, unlike ObservableForProperty(). Use this - /// method in constructors to set up bindings between properties that also - /// need an initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The 6 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAnyValue( - this TSender? sender, - Expression> property1, - Expression> property2, - Expression> property3, - Expression> property4, - Expression> property5, - Expression> property6, - Func selector) - { - return sender!.WhenAny(property1, property2, property3, property4, property5, property6, - (c1, c2, c3, c4, c5, c6) => - selector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value)); - } - /// - /// WhenAny allows you to observe whenever one or more properties on an - /// object have changed, providing an initial value when the Observable - /// is set up, unlike ObservableForProperty(). Use this method in - /// constructors to set up bindings between properties that also need an - /// initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The 6 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAny( + /// + /// WhenAny allows you to observe whenever one or more properties on an + /// object have changed, providing an initial value when the Observable + /// is set up, unlike ObservableForProperty(). Use this method in + /// constructors to set up bindings between properties that also need an + /// initial setup. + /// + /// The object where the property chain starts. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. + public static IObservable WhenAnyDynamic( + this TSender? sender, + Expression? property1, + Expression? property2, + Expression? property3, + Expression? property4, + Expression? property5, + Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector, + bool isDistinct = true) + { + return Observable.CombineLatest( + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property1, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property2, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property3, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property4, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property5, false, false, isDistinct: isDistinct), + selector + ); + } + + /// + /// WhenAnyValue allows you to observe whenever the value of one or more + /// properties on an object have changed, providing an initial value when + /// the Observable is set up, unlike ObservableForProperty(). Use this + /// method in constructors to set up bindings between properties that also + /// need an initial setup. + /// + /// The object where the property chain starts. + /// if set to true [is distinct]. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The 6 property chain to reference. This will be a expression pointing to a end property or field. + public static IObservable<(T1,T2,T3,T4,T5,T6)> WhenAnyValue( + this TSender? sender, + Expression> property1, + Expression> property2, + Expression> property3, + Expression> property4, + Expression> property5, + Expression> property6 + , + bool isDistinct = true) + { + return sender!.WhenAny(property1, property2, property3, property4, property5, property6, + (c1, c2, c3, c4, c5, c6) => + (c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value), + isDistinct); + } + + /// + /// WhenAnyValue allows you to observe whenever the value of one or more + /// properties on an object have changed, providing an initial value when + /// the Observable is set up, unlike ObservableForProperty(). Use this + /// method in constructors to set up bindings between properties that also + /// need an initial setup. + /// + /// The object where the property chain starts. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The 6 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. + public static IObservable WhenAnyValue( this TSender? sender, Expression> property1, Expression> property2, @@ -624,142 +647,150 @@ public static IObservable WhenAny( Expression> property4, Expression> property5, Expression> property6, - Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector) - { - return Observable.CombineLatest( - sender!.ObservableForProperty(property1, false, false), - sender!.ObservableForProperty(property2, false, false), - sender!.ObservableForProperty(property3, false, false), - sender!.ObservableForProperty(property4, false, false), - sender!.ObservableForProperty(property5, false, false), - sender!.ObservableForProperty(property6, false, false), - selector - ); - } + Func selector, + bool isDistinct = true) + { + return sender!.WhenAny(property1, property2, property3, property4, property5, property6, + (c1, c2, c3, c4, c5, c6) => + selector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value), + isDistinct); + } + /// + /// WhenAny allows you to observe whenever one or more properties on an + /// object have changed, providing an initial value when the Observable + /// is set up, unlike ObservableForProperty(). Use this method in + /// constructors to set up bindings between properties that also need an + /// initial setup. + /// + /// The object where the property chain starts. + /// if set to true [is distinct]. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The 6 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + public static IObservable WhenAny( + this TSender? sender, + Expression> property1, + Expression> property2, + Expression> property3, + Expression> property4, + Expression> property5, + Expression> property6, + Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector, + bool isDistinct = true) + { + return Observable.CombineLatest( + sender!.ObservableForProperty(property1, false, false, isDistinct), + sender!.ObservableForProperty(property2, false, false, isDistinct), + sender!.ObservableForProperty(property3, false, false, isDistinct), + sender!.ObservableForProperty(property4, false, false, isDistinct), + sender!.ObservableForProperty(property5, false, false, isDistinct), + sender!.ObservableForProperty(property6, false, false, isDistinct), + selector + ); + } - /// - /// WhenAny allows you to observe whenever one or more properties on an - /// object have changed, providing an initial value when the Observable - /// is set up, unlike ObservableForProperty(). Use this method in - /// constructors to set up bindings between properties that also need an - /// initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The 6 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAnyDynamic( - this TSender? sender, - Expression? property1, - Expression? property2, - Expression? property3, - Expression? property4, - Expression? property5, - Expression? property6, - Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector) - { - return Observable.CombineLatest( - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property1, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property2, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property3, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property4, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property5, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property6, false, false), - selector - ); - } - - /// - /// WhenAnyValue allows you to observe whenever the value of one or more - /// properties on an object have changed, providing an initial value when - /// the Observable is set up, unlike ObservableForProperty(). Use this - /// method in constructors to set up bindings between properties that also - /// need an initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The 6 property chain to reference. This will be a expression pointing to a end property or field. - /// The 7 property chain to reference. This will be a expression pointing to a end property or field. - public static IObservable<(T1,T2,T3,T4,T5,T6,T7)> WhenAnyValue( - this TSender? sender, - Expression> property1, - Expression> property2, - Expression> property3, - Expression> property4, - Expression> property5, - Expression> property6, - Expression> property7 - ) - { - return sender!.WhenAny(property1, property2, property3, property4, property5, property6, property7, - (c1, c2, c3, c4, c5, c6, c7) => - (c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value, c7.Value)); - } - - /// - /// WhenAnyValue allows you to observe whenever the value of one or more - /// properties on an object have changed, providing an initial value when - /// the Observable is set up, unlike ObservableForProperty(). Use this - /// method in constructors to set up bindings between properties that also - /// need an initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The 6 property chain to reference. This will be a expression pointing to a end property or field. - /// The 7 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAnyValue( - this TSender? sender, - Expression> property1, - Expression> property2, - Expression> property3, - Expression> property4, - Expression> property5, - Expression> property6, - Expression> property7, - Func selector) - { - return sender!.WhenAny(property1, property2, property3, property4, property5, property6, property7, - (c1, c2, c3, c4, c5, c6, c7) => - selector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value, c7.Value)); - } - /// - /// WhenAny allows you to observe whenever one or more properties on an - /// object have changed, providing an initial value when the Observable - /// is set up, unlike ObservableForProperty(). Use this method in - /// constructors to set up bindings between properties that also need an - /// initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The 6 property chain to reference. This will be a expression pointing to a end property or field. - /// The 7 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAny( + /// + /// WhenAny allows you to observe whenever one or more properties on an + /// object have changed, providing an initial value when the Observable + /// is set up, unlike ObservableForProperty(). Use this method in + /// constructors to set up bindings between properties that also need an + /// initial setup. + /// + /// The object where the property chain starts. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The 6 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. + public static IObservable WhenAnyDynamic( + this TSender? sender, + Expression? property1, + Expression? property2, + Expression? property3, + Expression? property4, + Expression? property5, + Expression? property6, + Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector, + bool isDistinct = true) + { + return Observable.CombineLatest( + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property1, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property2, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property3, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property4, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property5, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property6, false, false, isDistinct: isDistinct), + selector + ); + } + + /// + /// WhenAnyValue allows you to observe whenever the value of one or more + /// properties on an object have changed, providing an initial value when + /// the Observable is set up, unlike ObservableForProperty(). Use this + /// method in constructors to set up bindings between properties that also + /// need an initial setup. + /// + /// The object where the property chain starts. + /// if set to true [is distinct]. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The 6 property chain to reference. This will be a expression pointing to a end property or field. + /// The 7 property chain to reference. This will be a expression pointing to a end property or field. + public static IObservable<(T1,T2,T3,T4,T5,T6,T7)> WhenAnyValue( + this TSender? sender, + Expression> property1, + Expression> property2, + Expression> property3, + Expression> property4, + Expression> property5, + Expression> property6, + Expression> property7 + , + bool isDistinct = true) + { + return sender!.WhenAny(property1, property2, property3, property4, property5, property6, property7, + (c1, c2, c3, c4, c5, c6, c7) => + (c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value, c7.Value), + isDistinct); + } + + /// + /// WhenAnyValue allows you to observe whenever the value of one or more + /// properties on an object have changed, providing an initial value when + /// the Observable is set up, unlike ObservableForProperty(). Use this + /// method in constructors to set up bindings between properties that also + /// need an initial setup. + /// + /// The object where the property chain starts. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The 6 property chain to reference. This will be a expression pointing to a end property or field. + /// The 7 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. + public static IObservable WhenAnyValue( this TSender? sender, Expression> property1, Expression> property2, @@ -768,120 +799,125 @@ public static IObservable WhenAny( Expression> property5, Expression> property6, Expression> property7, - Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector) - { - return Observable.CombineLatest( - sender!.ObservableForProperty(property1, false, false), - sender!.ObservableForProperty(property2, false, false), - sender!.ObservableForProperty(property3, false, false), - sender!.ObservableForProperty(property4, false, false), - sender!.ObservableForProperty(property5, false, false), - sender!.ObservableForProperty(property6, false, false), - sender!.ObservableForProperty(property7, false, false), - selector - ); - } + Func selector, + bool isDistinct = true) + { + return sender!.WhenAny(property1, property2, property3, property4, property5, property6, property7, + (c1, c2, c3, c4, c5, c6, c7) => + selector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value, c7.Value), + isDistinct); + } + /// + /// WhenAny allows you to observe whenever one or more properties on an + /// object have changed, providing an initial value when the Observable + /// is set up, unlike ObservableForProperty(). Use this method in + /// constructors to set up bindings between properties that also need an + /// initial setup. + /// + /// The object where the property chain starts. + /// if set to true [is distinct]. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The 6 property chain to reference. This will be a expression pointing to a end property or field. + /// The 7 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + public static IObservable WhenAny( + this TSender? sender, + Expression> property1, + Expression> property2, + Expression> property3, + Expression> property4, + Expression> property5, + Expression> property6, + Expression> property7, + Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector, + bool isDistinct = true) + { + return Observable.CombineLatest( + sender!.ObservableForProperty(property1, false, false, isDistinct), + sender!.ObservableForProperty(property2, false, false, isDistinct), + sender!.ObservableForProperty(property3, false, false, isDistinct), + sender!.ObservableForProperty(property4, false, false, isDistinct), + sender!.ObservableForProperty(property5, false, false, isDistinct), + sender!.ObservableForProperty(property6, false, false, isDistinct), + sender!.ObservableForProperty(property7, false, false, isDistinct), + selector + ); + } - /// - /// WhenAny allows you to observe whenever one or more properties on an - /// object have changed, providing an initial value when the Observable - /// is set up, unlike ObservableForProperty(). Use this method in - /// constructors to set up bindings between properties that also need an - /// initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The 6 property chain to reference. This will be a expression pointing to a end property or field. - /// The 7 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAnyDynamic( - this TSender? sender, - Expression? property1, - Expression? property2, - Expression? property3, - Expression? property4, - Expression? property5, - Expression? property6, - Expression? property7, - Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector) - { - return Observable.CombineLatest( - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property1, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property2, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property3, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property4, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property5, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property6, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property7, false, false), - selector - ); - } - - - /// - /// WhenAnyValue allows you to observe whenever the value of one or more - /// properties on an object have changed, providing an initial value when - /// the Observable is set up, unlike ObservableForProperty(). Use this - /// method in constructors to set up bindings between properties that also - /// need an initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The 6 property chain to reference. This will be a expression pointing to a end property or field. - /// The 7 property chain to reference. This will be a expression pointing to a end property or field. - /// The 8 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAnyValue( - this TSender? sender, - Expression> property1, - Expression> property2, - Expression> property3, - Expression> property4, - Expression> property5, - Expression> property6, - Expression> property7, - Expression> property8, - Func selector) - { - return sender!.WhenAny(property1, property2, property3, property4, property5, property6, property7, property8, - (c1, c2, c3, c4, c5, c6, c7, c8) => - selector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value, c7.Value, c8.Value)); - } - /// - /// WhenAny allows you to observe whenever one or more properties on an - /// object have changed, providing an initial value when the Observable - /// is set up, unlike ObservableForProperty(). Use this method in - /// constructors to set up bindings between properties that also need an - /// initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The 6 property chain to reference. This will be a expression pointing to a end property or field. - /// The 7 property chain to reference. This will be a expression pointing to a end property or field. - /// The 8 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAny( + /// + /// WhenAny allows you to observe whenever one or more properties on an + /// object have changed, providing an initial value when the Observable + /// is set up, unlike ObservableForProperty(). Use this method in + /// constructors to set up bindings between properties that also need an + /// initial setup. + /// + /// The object where the property chain starts. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The 6 property chain to reference. This will be a expression pointing to a end property or field. + /// The 7 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. + public static IObservable WhenAnyDynamic( + this TSender? sender, + Expression? property1, + Expression? property2, + Expression? property3, + Expression? property4, + Expression? property5, + Expression? property6, + Expression? property7, + Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector, + bool isDistinct = true) + { + return Observable.CombineLatest( + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property1, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property2, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property3, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property4, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property5, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property6, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property7, false, false, isDistinct: isDistinct), + selector + ); + } + + + /// + /// WhenAnyValue allows you to observe whenever the value of one or more + /// properties on an object have changed, providing an initial value when + /// the Observable is set up, unlike ObservableForProperty(). Use this + /// method in constructors to set up bindings between properties that also + /// need an initial setup. + /// + /// The object where the property chain starts. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The 6 property chain to reference. This will be a expression pointing to a end property or field. + /// The 7 property chain to reference. This will be a expression pointing to a end property or field. + /// The 8 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. + public static IObservable WhenAnyValue( this TSender? sender, Expression> property1, Expression> property2, @@ -891,128 +927,133 @@ public static IObservable WhenAny( Expression> property6, Expression> property7, Expression> property8, - Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector) - { - return Observable.CombineLatest( - sender!.ObservableForProperty(property1, false, false), - sender!.ObservableForProperty(property2, false, false), - sender!.ObservableForProperty(property3, false, false), - sender!.ObservableForProperty(property4, false, false), - sender!.ObservableForProperty(property5, false, false), - sender!.ObservableForProperty(property6, false, false), - sender!.ObservableForProperty(property7, false, false), - sender!.ObservableForProperty(property8, false, false), - selector - ); - } + Func selector, + bool isDistinct = true) + { + return sender!.WhenAny(property1, property2, property3, property4, property5, property6, property7, property8, + (c1, c2, c3, c4, c5, c6, c7, c8) => + selector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value, c7.Value, c8.Value), + isDistinct); + } + /// + /// WhenAny allows you to observe whenever one or more properties on an + /// object have changed, providing an initial value when the Observable + /// is set up, unlike ObservableForProperty(). Use this method in + /// constructors to set up bindings between properties that also need an + /// initial setup. + /// + /// The object where the property chain starts. + /// if set to true [is distinct]. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The 6 property chain to reference. This will be a expression pointing to a end property or field. + /// The 7 property chain to reference. This will be a expression pointing to a end property or field. + /// The 8 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + public static IObservable WhenAny( + this TSender? sender, + Expression> property1, + Expression> property2, + Expression> property3, + Expression> property4, + Expression> property5, + Expression> property6, + Expression> property7, + Expression> property8, + Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector, + bool isDistinct = true) + { + return Observable.CombineLatest( + sender!.ObservableForProperty(property1, false, false, isDistinct), + sender!.ObservableForProperty(property2, false, false, isDistinct), + sender!.ObservableForProperty(property3, false, false, isDistinct), + sender!.ObservableForProperty(property4, false, false, isDistinct), + sender!.ObservableForProperty(property5, false, false, isDistinct), + sender!.ObservableForProperty(property6, false, false, isDistinct), + sender!.ObservableForProperty(property7, false, false, isDistinct), + sender!.ObservableForProperty(property8, false, false, isDistinct), + selector + ); + } - /// - /// WhenAny allows you to observe whenever one or more properties on an - /// object have changed, providing an initial value when the Observable - /// is set up, unlike ObservableForProperty(). Use this method in - /// constructors to set up bindings between properties that also need an - /// initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The 6 property chain to reference. This will be a expression pointing to a end property or field. - /// The 7 property chain to reference. This will be a expression pointing to a end property or field. - /// The 8 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAnyDynamic( - this TSender? sender, - Expression? property1, - Expression? property2, - Expression? property3, - Expression? property4, - Expression? property5, - Expression? property6, - Expression? property7, - Expression? property8, - Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector) - { - return Observable.CombineLatest( - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property1, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property2, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property3, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property4, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property5, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property6, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property7, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property8, false, false), - selector - ); - } - - - /// - /// WhenAnyValue allows you to observe whenever the value of one or more - /// properties on an object have changed, providing an initial value when - /// the Observable is set up, unlike ObservableForProperty(). Use this - /// method in constructors to set up bindings between properties that also - /// need an initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The 6 property chain to reference. This will be a expression pointing to a end property or field. - /// The 7 property chain to reference. This will be a expression pointing to a end property or field. - /// The 8 property chain to reference. This will be a expression pointing to a end property or field. - /// The 9 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAnyValue( - this TSender? sender, - Expression> property1, - Expression> property2, - Expression> property3, - Expression> property4, - Expression> property5, - Expression> property6, - Expression> property7, - Expression> property8, - Expression> property9, - Func selector) - { - return sender!.WhenAny(property1, property2, property3, property4, property5, property6, property7, property8, property9, - (c1, c2, c3, c4, c5, c6, c7, c8, c9) => - selector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value, c7.Value, c8.Value, c9.Value)); - } - /// - /// WhenAny allows you to observe whenever one or more properties on an - /// object have changed, providing an initial value when the Observable - /// is set up, unlike ObservableForProperty(). Use this method in - /// constructors to set up bindings between properties that also need an - /// initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The 6 property chain to reference. This will be a expression pointing to a end property or field. - /// The 7 property chain to reference. This will be a expression pointing to a end property or field. - /// The 8 property chain to reference. This will be a expression pointing to a end property or field. - /// The 9 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAny( + /// + /// WhenAny allows you to observe whenever one or more properties on an + /// object have changed, providing an initial value when the Observable + /// is set up, unlike ObservableForProperty(). Use this method in + /// constructors to set up bindings between properties that also need an + /// initial setup. + /// + /// The object where the property chain starts. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The 6 property chain to reference. This will be a expression pointing to a end property or field. + /// The 7 property chain to reference. This will be a expression pointing to a end property or field. + /// The 8 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. + public static IObservable WhenAnyDynamic( + this TSender? sender, + Expression? property1, + Expression? property2, + Expression? property3, + Expression? property4, + Expression? property5, + Expression? property6, + Expression? property7, + Expression? property8, + Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector, + bool isDistinct = true) + { + return Observable.CombineLatest( + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property1, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property2, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property3, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property4, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property5, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property6, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property7, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property8, false, false, isDistinct: isDistinct), + selector + ); + } + + + /// + /// WhenAnyValue allows you to observe whenever the value of one or more + /// properties on an object have changed, providing an initial value when + /// the Observable is set up, unlike ObservableForProperty(). Use this + /// method in constructors to set up bindings between properties that also + /// need an initial setup. + /// + /// The object where the property chain starts. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The 6 property chain to reference. This will be a expression pointing to a end property or field. + /// The 7 property chain to reference. This will be a expression pointing to a end property or field. + /// The 8 property chain to reference. This will be a expression pointing to a end property or field. + /// The 9 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. + public static IObservable WhenAnyValue( this TSender? sender, Expression> property1, Expression> property2, @@ -1023,136 +1064,141 @@ public static IObservable WhenAny> property7, Expression> property8, Expression> property9, - Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector) - { - return Observable.CombineLatest( - sender!.ObservableForProperty(property1, false, false), - sender!.ObservableForProperty(property2, false, false), - sender!.ObservableForProperty(property3, false, false), - sender!.ObservableForProperty(property4, false, false), - sender!.ObservableForProperty(property5, false, false), - sender!.ObservableForProperty(property6, false, false), - sender!.ObservableForProperty(property7, false, false), - sender!.ObservableForProperty(property8, false, false), - sender!.ObservableForProperty(property9, false, false), - selector - ); - } + Func selector, + bool isDistinct = true) + { + return sender!.WhenAny(property1, property2, property3, property4, property5, property6, property7, property8, property9, + (c1, c2, c3, c4, c5, c6, c7, c8, c9) => + selector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value, c7.Value, c8.Value, c9.Value), + isDistinct); + } + /// + /// WhenAny allows you to observe whenever one or more properties on an + /// object have changed, providing an initial value when the Observable + /// is set up, unlike ObservableForProperty(). Use this method in + /// constructors to set up bindings between properties that also need an + /// initial setup. + /// + /// The object where the property chain starts. + /// if set to true [is distinct]. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The 6 property chain to reference. This will be a expression pointing to a end property or field. + /// The 7 property chain to reference. This will be a expression pointing to a end property or field. + /// The 8 property chain to reference. This will be a expression pointing to a end property or field. + /// The 9 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + public static IObservable WhenAny( + this TSender? sender, + Expression> property1, + Expression> property2, + Expression> property3, + Expression> property4, + Expression> property5, + Expression> property6, + Expression> property7, + Expression> property8, + Expression> property9, + Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector, + bool isDistinct = true) + { + return Observable.CombineLatest( + sender!.ObservableForProperty(property1, false, false, isDistinct), + sender!.ObservableForProperty(property2, false, false, isDistinct), + sender!.ObservableForProperty(property3, false, false, isDistinct), + sender!.ObservableForProperty(property4, false, false, isDistinct), + sender!.ObservableForProperty(property5, false, false, isDistinct), + sender!.ObservableForProperty(property6, false, false, isDistinct), + sender!.ObservableForProperty(property7, false, false, isDistinct), + sender!.ObservableForProperty(property8, false, false, isDistinct), + sender!.ObservableForProperty(property9, false, false, isDistinct), + selector + ); + } - /// - /// WhenAny allows you to observe whenever one or more properties on an - /// object have changed, providing an initial value when the Observable - /// is set up, unlike ObservableForProperty(). Use this method in - /// constructors to set up bindings between properties that also need an - /// initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The 6 property chain to reference. This will be a expression pointing to a end property or field. - /// The 7 property chain to reference. This will be a expression pointing to a end property or field. - /// The 8 property chain to reference. This will be a expression pointing to a end property or field. - /// The 9 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAnyDynamic( - this TSender? sender, - Expression? property1, - Expression? property2, - Expression? property3, - Expression? property4, - Expression? property5, - Expression? property6, - Expression? property7, - Expression? property8, - Expression? property9, - Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector) - { - return Observable.CombineLatest( - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property1, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property2, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property3, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property4, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property5, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property6, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property7, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property8, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property9, false, false), - selector - ); - } - - - /// - /// WhenAnyValue allows you to observe whenever the value of one or more - /// properties on an object have changed, providing an initial value when - /// the Observable is set up, unlike ObservableForProperty(). Use this - /// method in constructors to set up bindings between properties that also - /// need an initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The 6 property chain to reference. This will be a expression pointing to a end property or field. - /// The 7 property chain to reference. This will be a expression pointing to a end property or field. - /// The 8 property chain to reference. This will be a expression pointing to a end property or field. - /// The 9 property chain to reference. This will be a expression pointing to a end property or field. - /// The 10 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAnyValue( - this TSender? sender, - Expression> property1, - Expression> property2, - Expression> property3, - Expression> property4, - Expression> property5, - Expression> property6, - Expression> property7, - Expression> property8, - Expression> property9, - Expression> property10, - Func selector) - { - return sender!.WhenAny(property1, property2, property3, property4, property5, property6, property7, property8, property9, property10, - (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) => - selector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value, c7.Value, c8.Value, c9.Value, c10.Value)); - } - /// - /// WhenAny allows you to observe whenever one or more properties on an - /// object have changed, providing an initial value when the Observable - /// is set up, unlike ObservableForProperty(). Use this method in - /// constructors to set up bindings between properties that also need an - /// initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The 6 property chain to reference. This will be a expression pointing to a end property or field. - /// The 7 property chain to reference. This will be a expression pointing to a end property or field. - /// The 8 property chain to reference. This will be a expression pointing to a end property or field. - /// The 9 property chain to reference. This will be a expression pointing to a end property or field. - /// The 10 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAny( + /// + /// WhenAny allows you to observe whenever one or more properties on an + /// object have changed, providing an initial value when the Observable + /// is set up, unlike ObservableForProperty(). Use this method in + /// constructors to set up bindings between properties that also need an + /// initial setup. + /// + /// The object where the property chain starts. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The 6 property chain to reference. This will be a expression pointing to a end property or field. + /// The 7 property chain to reference. This will be a expression pointing to a end property or field. + /// The 8 property chain to reference. This will be a expression pointing to a end property or field. + /// The 9 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. + public static IObservable WhenAnyDynamic( + this TSender? sender, + Expression? property1, + Expression? property2, + Expression? property3, + Expression? property4, + Expression? property5, + Expression? property6, + Expression? property7, + Expression? property8, + Expression? property9, + Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector, + bool isDistinct = true) + { + return Observable.CombineLatest( + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property1, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property2, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property3, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property4, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property5, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property6, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property7, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property8, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property9, false, false, isDistinct: isDistinct), + selector + ); + } + + + /// + /// WhenAnyValue allows you to observe whenever the value of one or more + /// properties on an object have changed, providing an initial value when + /// the Observable is set up, unlike ObservableForProperty(). Use this + /// method in constructors to set up bindings between properties that also + /// need an initial setup. + /// + /// The object where the property chain starts. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The 6 property chain to reference. This will be a expression pointing to a end property or field. + /// The 7 property chain to reference. This will be a expression pointing to a end property or field. + /// The 8 property chain to reference. This will be a expression pointing to a end property or field. + /// The 9 property chain to reference. This will be a expression pointing to a end property or field. + /// The 10 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. + public static IObservable WhenAnyValue( this TSender? sender, Expression> property1, Expression> property2, @@ -1164,144 +1210,149 @@ public static IObservable WhenAny> property8, Expression> property9, Expression> property10, - Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector) - { - return Observable.CombineLatest( - sender!.ObservableForProperty(property1, false, false), - sender!.ObservableForProperty(property2, false, false), - sender!.ObservableForProperty(property3, false, false), - sender!.ObservableForProperty(property4, false, false), - sender!.ObservableForProperty(property5, false, false), - sender!.ObservableForProperty(property6, false, false), - sender!.ObservableForProperty(property7, false, false), - sender!.ObservableForProperty(property8, false, false), - sender!.ObservableForProperty(property9, false, false), - sender!.ObservableForProperty(property10, false, false), - selector - ); - } + Func selector, + bool isDistinct = true) + { + return sender!.WhenAny(property1, property2, property3, property4, property5, property6, property7, property8, property9, property10, + (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) => + selector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value, c7.Value, c8.Value, c9.Value, c10.Value), + isDistinct); + } + /// + /// WhenAny allows you to observe whenever one or more properties on an + /// object have changed, providing an initial value when the Observable + /// is set up, unlike ObservableForProperty(). Use this method in + /// constructors to set up bindings between properties that also need an + /// initial setup. + /// + /// The object where the property chain starts. + /// if set to true [is distinct]. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The 6 property chain to reference. This will be a expression pointing to a end property or field. + /// The 7 property chain to reference. This will be a expression pointing to a end property or field. + /// The 8 property chain to reference. This will be a expression pointing to a end property or field. + /// The 9 property chain to reference. This will be a expression pointing to a end property or field. + /// The 10 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + public static IObservable WhenAny( + this TSender? sender, + Expression> property1, + Expression> property2, + Expression> property3, + Expression> property4, + Expression> property5, + Expression> property6, + Expression> property7, + Expression> property8, + Expression> property9, + Expression> property10, + Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector, + bool isDistinct = true) + { + return Observable.CombineLatest( + sender!.ObservableForProperty(property1, false, false, isDistinct), + sender!.ObservableForProperty(property2, false, false, isDistinct), + sender!.ObservableForProperty(property3, false, false, isDistinct), + sender!.ObservableForProperty(property4, false, false, isDistinct), + sender!.ObservableForProperty(property5, false, false, isDistinct), + sender!.ObservableForProperty(property6, false, false, isDistinct), + sender!.ObservableForProperty(property7, false, false, isDistinct), + sender!.ObservableForProperty(property8, false, false, isDistinct), + sender!.ObservableForProperty(property9, false, false, isDistinct), + sender!.ObservableForProperty(property10, false, false, isDistinct), + selector + ); + } - /// - /// WhenAny allows you to observe whenever one or more properties on an - /// object have changed, providing an initial value when the Observable - /// is set up, unlike ObservableForProperty(). Use this method in - /// constructors to set up bindings between properties that also need an - /// initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The 6 property chain to reference. This will be a expression pointing to a end property or field. - /// The 7 property chain to reference. This will be a expression pointing to a end property or field. - /// The 8 property chain to reference. This will be a expression pointing to a end property or field. - /// The 9 property chain to reference. This will be a expression pointing to a end property or field. - /// The 10 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAnyDynamic( - this TSender? sender, - Expression? property1, - Expression? property2, - Expression? property3, - Expression? property4, - Expression? property5, - Expression? property6, - Expression? property7, - Expression? property8, - Expression? property9, - Expression? property10, - Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector) - { - return Observable.CombineLatest( - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property1, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property2, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property3, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property4, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property5, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property6, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property7, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property8, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property9, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property10, false, false), - selector - ); - } - - - /// - /// WhenAnyValue allows you to observe whenever the value of one or more - /// properties on an object have changed, providing an initial value when - /// the Observable is set up, unlike ObservableForProperty(). Use this - /// method in constructors to set up bindings between properties that also - /// need an initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The 6 property chain to reference. This will be a expression pointing to a end property or field. - /// The 7 property chain to reference. This will be a expression pointing to a end property or field. - /// The 8 property chain to reference. This will be a expression pointing to a end property or field. - /// The 9 property chain to reference. This will be a expression pointing to a end property or field. - /// The 10 property chain to reference. This will be a expression pointing to a end property or field. - /// The 11 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAnyValue( - this TSender? sender, - Expression> property1, - Expression> property2, - Expression> property3, - Expression> property4, - Expression> property5, - Expression> property6, - Expression> property7, - Expression> property8, - Expression> property9, - Expression> property10, - Expression> property11, - Func selector) - { - return sender!.WhenAny(property1, property2, property3, property4, property5, property6, property7, property8, property9, property10, property11, - (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) => - selector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value, c7.Value, c8.Value, c9.Value, c10.Value, c11.Value)); - } - /// - /// WhenAny allows you to observe whenever one or more properties on an - /// object have changed, providing an initial value when the Observable - /// is set up, unlike ObservableForProperty(). Use this method in - /// constructors to set up bindings between properties that also need an - /// initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The 6 property chain to reference. This will be a expression pointing to a end property or field. - /// The 7 property chain to reference. This will be a expression pointing to a end property or field. - /// The 8 property chain to reference. This will be a expression pointing to a end property or field. - /// The 9 property chain to reference. This will be a expression pointing to a end property or field. - /// The 10 property chain to reference. This will be a expression pointing to a end property or field. - /// The 11 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAny( + /// + /// WhenAny allows you to observe whenever one or more properties on an + /// object have changed, providing an initial value when the Observable + /// is set up, unlike ObservableForProperty(). Use this method in + /// constructors to set up bindings between properties that also need an + /// initial setup. + /// + /// The object where the property chain starts. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The 6 property chain to reference. This will be a expression pointing to a end property or field. + /// The 7 property chain to reference. This will be a expression pointing to a end property or field. + /// The 8 property chain to reference. This will be a expression pointing to a end property or field. + /// The 9 property chain to reference. This will be a expression pointing to a end property or field. + /// The 10 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. + public static IObservable WhenAnyDynamic( + this TSender? sender, + Expression? property1, + Expression? property2, + Expression? property3, + Expression? property4, + Expression? property5, + Expression? property6, + Expression? property7, + Expression? property8, + Expression? property9, + Expression? property10, + Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector, + bool isDistinct = true) + { + return Observable.CombineLatest( + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property1, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property2, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property3, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property4, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property5, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property6, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property7, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property8, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property9, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property10, false, false, isDistinct: isDistinct), + selector + ); + } + + + /// + /// WhenAnyValue allows you to observe whenever the value of one or more + /// properties on an object have changed, providing an initial value when + /// the Observable is set up, unlike ObservableForProperty(). Use this + /// method in constructors to set up bindings between properties that also + /// need an initial setup. + /// + /// The object where the property chain starts. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The 6 property chain to reference. This will be a expression pointing to a end property or field. + /// The 7 property chain to reference. This will be a expression pointing to a end property or field. + /// The 8 property chain to reference. This will be a expression pointing to a end property or field. + /// The 9 property chain to reference. This will be a expression pointing to a end property or field. + /// The 10 property chain to reference. This will be a expression pointing to a end property or field. + /// The 11 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. + public static IObservable WhenAnyValue( this TSender? sender, Expression> property1, Expression> property2, @@ -1314,152 +1365,157 @@ public static IObservable WhenAny> property9, Expression> property10, Expression> property11, - Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector) - { - return Observable.CombineLatest( - sender!.ObservableForProperty(property1, false, false), - sender!.ObservableForProperty(property2, false, false), - sender!.ObservableForProperty(property3, false, false), - sender!.ObservableForProperty(property4, false, false), - sender!.ObservableForProperty(property5, false, false), - sender!.ObservableForProperty(property6, false, false), - sender!.ObservableForProperty(property7, false, false), - sender!.ObservableForProperty(property8, false, false), - sender!.ObservableForProperty(property9, false, false), - sender!.ObservableForProperty(property10, false, false), - sender!.ObservableForProperty(property11, false, false), - selector - ); - } + Func selector, + bool isDistinct = true) + { + return sender!.WhenAny(property1, property2, property3, property4, property5, property6, property7, property8, property9, property10, property11, + (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) => + selector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value, c7.Value, c8.Value, c9.Value, c10.Value, c11.Value), + isDistinct); + } + /// + /// WhenAny allows you to observe whenever one or more properties on an + /// object have changed, providing an initial value when the Observable + /// is set up, unlike ObservableForProperty(). Use this method in + /// constructors to set up bindings between properties that also need an + /// initial setup. + /// + /// The object where the property chain starts. + /// if set to true [is distinct]. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The 6 property chain to reference. This will be a expression pointing to a end property or field. + /// The 7 property chain to reference. This will be a expression pointing to a end property or field. + /// The 8 property chain to reference. This will be a expression pointing to a end property or field. + /// The 9 property chain to reference. This will be a expression pointing to a end property or field. + /// The 10 property chain to reference. This will be a expression pointing to a end property or field. + /// The 11 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + public static IObservable WhenAny( + this TSender? sender, + Expression> property1, + Expression> property2, + Expression> property3, + Expression> property4, + Expression> property5, + Expression> property6, + Expression> property7, + Expression> property8, + Expression> property9, + Expression> property10, + Expression> property11, + Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector, + bool isDistinct = true) + { + return Observable.CombineLatest( + sender!.ObservableForProperty(property1, false, false, isDistinct), + sender!.ObservableForProperty(property2, false, false, isDistinct), + sender!.ObservableForProperty(property3, false, false, isDistinct), + sender!.ObservableForProperty(property4, false, false, isDistinct), + sender!.ObservableForProperty(property5, false, false, isDistinct), + sender!.ObservableForProperty(property6, false, false, isDistinct), + sender!.ObservableForProperty(property7, false, false, isDistinct), + sender!.ObservableForProperty(property8, false, false, isDistinct), + sender!.ObservableForProperty(property9, false, false, isDistinct), + sender!.ObservableForProperty(property10, false, false, isDistinct), + sender!.ObservableForProperty(property11, false, false, isDistinct), + selector + ); + } - /// - /// WhenAny allows you to observe whenever one or more properties on an - /// object have changed, providing an initial value when the Observable - /// is set up, unlike ObservableForProperty(). Use this method in - /// constructors to set up bindings between properties that also need an - /// initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The 6 property chain to reference. This will be a expression pointing to a end property or field. - /// The 7 property chain to reference. This will be a expression pointing to a end property or field. - /// The 8 property chain to reference. This will be a expression pointing to a end property or field. - /// The 9 property chain to reference. This will be a expression pointing to a end property or field. - /// The 10 property chain to reference. This will be a expression pointing to a end property or field. - /// The 11 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAnyDynamic( - this TSender? sender, - Expression? property1, - Expression? property2, - Expression? property3, - Expression? property4, - Expression? property5, - Expression? property6, - Expression? property7, - Expression? property8, - Expression? property9, - Expression? property10, - Expression? property11, - Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector) - { - return Observable.CombineLatest( - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property1, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property2, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property3, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property4, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property5, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property6, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property7, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property8, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property9, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property10, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property11, false, false), - selector - ); - } - - - /// - /// WhenAnyValue allows you to observe whenever the value of one or more - /// properties on an object have changed, providing an initial value when - /// the Observable is set up, unlike ObservableForProperty(). Use this - /// method in constructors to set up bindings between properties that also - /// need an initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The 6 property chain to reference. This will be a expression pointing to a end property or field. - /// The 7 property chain to reference. This will be a expression pointing to a end property or field. - /// The 8 property chain to reference. This will be a expression pointing to a end property or field. - /// The 9 property chain to reference. This will be a expression pointing to a end property or field. - /// The 10 property chain to reference. This will be a expression pointing to a end property or field. - /// The 11 property chain to reference. This will be a expression pointing to a end property or field. - /// The 12 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAnyValue( - this TSender? sender, - Expression> property1, - Expression> property2, - Expression> property3, - Expression> property4, - Expression> property5, - Expression> property6, - Expression> property7, - Expression> property8, - Expression> property9, - Expression> property10, - Expression> property11, - Expression> property12, - Func selector) - { - return sender!.WhenAny(property1, property2, property3, property4, property5, property6, property7, property8, property9, property10, property11, property12, - (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) => - selector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value, c7.Value, c8.Value, c9.Value, c10.Value, c11.Value, c12.Value)); - } - /// - /// WhenAny allows you to observe whenever one or more properties on an - /// object have changed, providing an initial value when the Observable - /// is set up, unlike ObservableForProperty(). Use this method in - /// constructors to set up bindings between properties that also need an - /// initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The 6 property chain to reference. This will be a expression pointing to a end property or field. - /// The 7 property chain to reference. This will be a expression pointing to a end property or field. - /// The 8 property chain to reference. This will be a expression pointing to a end property or field. - /// The 9 property chain to reference. This will be a expression pointing to a end property or field. - /// The 10 property chain to reference. This will be a expression pointing to a end property or field. - /// The 11 property chain to reference. This will be a expression pointing to a end property or field. - /// The 12 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAny( + /// + /// WhenAny allows you to observe whenever one or more properties on an + /// object have changed, providing an initial value when the Observable + /// is set up, unlike ObservableForProperty(). Use this method in + /// constructors to set up bindings between properties that also need an + /// initial setup. + /// + /// The object where the property chain starts. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The 6 property chain to reference. This will be a expression pointing to a end property or field. + /// The 7 property chain to reference. This will be a expression pointing to a end property or field. + /// The 8 property chain to reference. This will be a expression pointing to a end property or field. + /// The 9 property chain to reference. This will be a expression pointing to a end property or field. + /// The 10 property chain to reference. This will be a expression pointing to a end property or field. + /// The 11 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. + public static IObservable WhenAnyDynamic( + this TSender? sender, + Expression? property1, + Expression? property2, + Expression? property3, + Expression? property4, + Expression? property5, + Expression? property6, + Expression? property7, + Expression? property8, + Expression? property9, + Expression? property10, + Expression? property11, + Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector, + bool isDistinct = true) + { + return Observable.CombineLatest( + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property1, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property2, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property3, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property4, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property5, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property6, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property7, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property8, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property9, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property10, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property11, false, false, isDistinct: isDistinct), + selector + ); + } + + + /// + /// WhenAnyValue allows you to observe whenever the value of one or more + /// properties on an object have changed, providing an initial value when + /// the Observable is set up, unlike ObservableForProperty(). Use this + /// method in constructors to set up bindings between properties that also + /// need an initial setup. + /// + /// The object where the property chain starts. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The 6 property chain to reference. This will be a expression pointing to a end property or field. + /// The 7 property chain to reference. This will be a expression pointing to a end property or field. + /// The 8 property chain to reference. This will be a expression pointing to a end property or field. + /// The 9 property chain to reference. This will be a expression pointing to a end property or field. + /// The 10 property chain to reference. This will be a expression pointing to a end property or field. + /// The 11 property chain to reference. This will be a expression pointing to a end property or field. + /// The 12 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. + public static IObservable WhenAnyValue( this TSender? sender, Expression> property1, Expression> property2, @@ -1473,541 +1529,590 @@ public static IObservable WhenAny> property10, Expression> property11, Expression> property12, - Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector) - { - return Observable.CombineLatest( - sender!.ObservableForProperty(property1, false, false), - sender!.ObservableForProperty(property2, false, false), - sender!.ObservableForProperty(property3, false, false), - sender!.ObservableForProperty(property4, false, false), - sender!.ObservableForProperty(property5, false, false), - sender!.ObservableForProperty(property6, false, false), - sender!.ObservableForProperty(property7, false, false), - sender!.ObservableForProperty(property8, false, false), - sender!.ObservableForProperty(property9, false, false), - sender!.ObservableForProperty(property10, false, false), - sender!.ObservableForProperty(property11, false, false), - sender!.ObservableForProperty(property12, false, false), - selector - ); - } + Func selector, + bool isDistinct = true) + { + return sender!.WhenAny(property1, property2, property3, property4, property5, property6, property7, property8, property9, property10, property11, property12, + (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) => + selector(c1.Value, c2.Value, c3.Value, c4.Value, c5.Value, c6.Value, c7.Value, c8.Value, c9.Value, c10.Value, c11.Value, c12.Value), + isDistinct); + } + /// + /// WhenAny allows you to observe whenever one or more properties on an + /// object have changed, providing an initial value when the Observable + /// is set up, unlike ObservableForProperty(). Use this method in + /// constructors to set up bindings between properties that also need an + /// initial setup. + /// + /// The object where the property chain starts. + /// if set to true [is distinct]. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The 6 property chain to reference. This will be a expression pointing to a end property or field. + /// The 7 property chain to reference. This will be a expression pointing to a end property or field. + /// The 8 property chain to reference. This will be a expression pointing to a end property or field. + /// The 9 property chain to reference. This will be a expression pointing to a end property or field. + /// The 10 property chain to reference. This will be a expression pointing to a end property or field. + /// The 11 property chain to reference. This will be a expression pointing to a end property or field. + /// The 12 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + public static IObservable WhenAny( + this TSender? sender, + Expression> property1, + Expression> property2, + Expression> property3, + Expression> property4, + Expression> property5, + Expression> property6, + Expression> property7, + Expression> property8, + Expression> property9, + Expression> property10, + Expression> property11, + Expression> property12, + Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector, + bool isDistinct = true) + { + return Observable.CombineLatest( + sender!.ObservableForProperty(property1, false, false, isDistinct), + sender!.ObservableForProperty(property2, false, false, isDistinct), + sender!.ObservableForProperty(property3, false, false, isDistinct), + sender!.ObservableForProperty(property4, false, false, isDistinct), + sender!.ObservableForProperty(property5, false, false, isDistinct), + sender!.ObservableForProperty(property6, false, false, isDistinct), + sender!.ObservableForProperty(property7, false, false, isDistinct), + sender!.ObservableForProperty(property8, false, false, isDistinct), + sender!.ObservableForProperty(property9, false, false, isDistinct), + sender!.ObservableForProperty(property10, false, false, isDistinct), + sender!.ObservableForProperty(property11, false, false, isDistinct), + sender!.ObservableForProperty(property12, false, false, isDistinct), + selector + ); + } - /// - /// WhenAny allows you to observe whenever one or more properties on an - /// object have changed, providing an initial value when the Observable - /// is set up, unlike ObservableForProperty(). Use this method in - /// constructors to set up bindings between properties that also need an - /// initial setup. - /// - /// The object where the property chain starts. - /// The 1 property chain to reference. This will be a expression pointing to a end property or field. - /// The 2 property chain to reference. This will be a expression pointing to a end property or field. - /// The 3 property chain to reference. This will be a expression pointing to a end property or field. - /// The 4 property chain to reference. This will be a expression pointing to a end property or field. - /// The 5 property chain to reference. This will be a expression pointing to a end property or field. - /// The 6 property chain to reference. This will be a expression pointing to a end property or field. - /// The 7 property chain to reference. This will be a expression pointing to a end property or field. - /// The 8 property chain to reference. This will be a expression pointing to a end property or field. - /// The 9 property chain to reference. This will be a expression pointing to a end property or field. - /// The 10 property chain to reference. This will be a expression pointing to a end property or field. - /// The 11 property chain to reference. This will be a expression pointing to a end property or field. - /// The 12 property chain to reference. This will be a expression pointing to a end property or field. - /// The selector which will determine the final value from the properties. - public static IObservable WhenAnyDynamic( - this TSender? sender, - Expression? property1, - Expression? property2, - Expression? property3, - Expression? property4, - Expression? property5, - Expression? property6, - Expression? property7, - Expression? property8, - Expression? property9, - Expression? property10, - Expression? property11, - Expression? property12, - Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector) - { - return Observable.CombineLatest( - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property1, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property2, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property3, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property4, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property5, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property6, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property7, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property8, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property9, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property10, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property11, false, false), - ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property12, false, false), - selector - ); - } - } -/// A mixin which provides support for subscribing to observable properties. -public static class WhenAnyObservableMixin -{ - /// Observe a observable which is set to a property, and automatically subscribe to the most recent emitted value. - /// The object where the property chain starts. - /// The first observable to observe. - public static IObservable WhenAnyObservable(this TSender? sender, Expression?>> obs1) - where TSender : class - { - return sender.WhenAny(obs1, x => x.Value!.EmptyIfNull()).Switch(); - } + /// + /// WhenAny allows you to observe whenever one or more properties on an + /// object have changed, providing an initial value when the Observable + /// is set up, unlike ObservableForProperty(). Use this method in + /// constructors to set up bindings between properties that also need an + /// initial setup. + /// + /// The object where the property chain starts. + /// The 1 property chain to reference. This will be a expression pointing to a end property or field. + /// The 2 property chain to reference. This will be a expression pointing to a end property or field. + /// The 3 property chain to reference. This will be a expression pointing to a end property or field. + /// The 4 property chain to reference. This will be a expression pointing to a end property or field. + /// The 5 property chain to reference. This will be a expression pointing to a end property or field. + /// The 6 property chain to reference. This will be a expression pointing to a end property or field. + /// The 7 property chain to reference. This will be a expression pointing to a end property or field. + /// The 8 property chain to reference. This will be a expression pointing to a end property or field. + /// The 9 property chain to reference. This will be a expression pointing to a end property or field. + /// The 10 property chain to reference. This will be a expression pointing to a end property or field. + /// The 11 property chain to reference. This will be a expression pointing to a end property or field. + /// The 12 property chain to reference. This will be a expression pointing to a end property or field. + /// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. + public static IObservable WhenAnyDynamic( + this TSender? sender, + Expression? property1, + Expression? property2, + Expression? property3, + Expression? property4, + Expression? property5, + Expression? property6, + Expression? property7, + Expression? property8, + Expression? property9, + Expression? property10, + Expression? property11, + Expression? property12, + Func, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, IObservedChange, TRet> selector, + bool isDistinct = true) + { + return Observable.CombineLatest( + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property1, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property2, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property3, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property4, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property5, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property6, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property7, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property8, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property9, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property10, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property11, false, false, isDistinct: isDistinct), + ReactiveNotifyPropertyChangedMixin + .SubscribeToExpressionChain(sender, property12, false, false, isDistinct: isDistinct), + selector + ); + } + } - /// Monitor a property that is an observable, and subscribe to the most recent emitted value. - /// The object where the property chain starts. - /// The 1 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 2 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - public static IObservable WhenAnyObservable(this TSender? sender, Expression?>> obs1, Expression?>> obs2) - where TSender : class - { - return sender.WhenAny(obs1, obs2, (o1, o2) => new[] {o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull()}) - .Select(x => x.Merge()).Switch(); - } - /// Monitor a property that is an observable, and subscribe to the most recent emitted value. - /// The object where the property chain starts. - /// The 1 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 2 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 3 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - public static IObservable WhenAnyObservable(this TSender? sender, Expression?>> obs1, Expression?>> obs2, Expression?>> obs3) - where TSender : class - { - return sender.WhenAny(obs1, obs2, obs3, (o1, o2, o3) => new[] {o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull()}) - .Select(x => x.Merge()).Switch(); - } - /// Monitor a property that is an observable, and subscribe to the most recent emitted value. - /// The object where the property chain starts. - /// The 1 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 2 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 3 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 4 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - public static IObservable WhenAnyObservable(this TSender? sender, Expression?>> obs1, Expression?>> obs2, Expression?>> obs3, Expression?>> obs4) - where TSender : class - { - return sender.WhenAny(obs1, obs2, obs3, obs4, (o1, o2, o3, o4) => new[] {o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull()}) - .Select(x => x.Merge()).Switch(); - } - /// Monitor a property that is an observable, and subscribe to the most recent emitted value. - /// The object where the property chain starts. - /// The 1 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 2 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 3 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 4 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 5 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - public static IObservable WhenAnyObservable(this TSender? sender, Expression?>> obs1, Expression?>> obs2, Expression?>> obs3, Expression?>> obs4, Expression?>> obs5) - where TSender : class - { - return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, (o1, o2, o3, o4, o5) => new[] {o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull()}) - .Select(x => x.Merge()).Switch(); - } - /// Monitor a property that is an observable, and subscribe to the most recent emitted value. - /// The object where the property chain starts. - /// The 1 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 2 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 3 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 4 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 5 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 6 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - public static IObservable WhenAnyObservable(this TSender? sender, Expression?>> obs1, Expression?>> obs2, Expression?>> obs3, Expression?>> obs4, Expression?>> obs5, Expression?>> obs6) - where TSender : class - { - return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, (o1, o2, o3, o4, o5, o6) => new[] {o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull()}) - .Select(x => x.Merge()).Switch(); - } - /// Monitor a property that is an observable, and subscribe to the most recent emitted value. - /// The object where the property chain starts. - /// The 1 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 2 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 3 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 4 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 5 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 6 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 7 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - public static IObservable WhenAnyObservable(this TSender? sender, Expression?>> obs1, Expression?>> obs2, Expression?>> obs3, Expression?>> obs4, Expression?>> obs5, Expression?>> obs6, Expression?>> obs7) - where TSender : class - { - return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, obs7, (o1, o2, o3, o4, o5, o6, o7) => new[] {o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), o7.Value!.EmptyIfNull()}) - .Select(x => x.Merge()).Switch(); - } - /// Monitor a property that is an observable, and subscribe to the most recent emitted value. - /// The object where the property chain starts. - /// The 1 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 2 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 3 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 4 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 5 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 6 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 7 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 8 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - public static IObservable WhenAnyObservable(this TSender? sender, Expression?>> obs1, Expression?>> obs2, Expression?>> obs3, Expression?>> obs4, Expression?>> obs5, Expression?>> obs6, Expression?>> obs7, Expression?>> obs8) - where TSender : class - { - return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, obs7, obs8, (o1, o2, o3, o4, o5, o6, o7, o8) => new[] {o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), o7.Value!.EmptyIfNull(), o8.Value!.EmptyIfNull()}) - .Select(x => x.Merge()).Switch(); - } - /// Monitor a property that is an observable, and subscribe to the most recent emitted value. - /// The object where the property chain starts. - /// The 1 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 2 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 3 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 4 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 5 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 6 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 7 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 8 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 9 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - public static IObservable WhenAnyObservable(this TSender? sender, Expression?>> obs1, Expression?>> obs2, Expression?>> obs3, Expression?>> obs4, Expression?>> obs5, Expression?>> obs6, Expression?>> obs7, Expression?>> obs8, Expression?>> obs9) - where TSender : class - { - return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, obs7, obs8, obs9, (o1, o2, o3, o4, o5, o6, o7, o8, o9) => new[] {o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), o7.Value!.EmptyIfNull(), o8.Value!.EmptyIfNull(), o9.Value!.EmptyIfNull()}) - .Select(x => x.Merge()).Switch(); - } - /// Monitor a property that is an observable, and subscribe to the most recent emitted value. - /// The object where the property chain starts. - /// The 1 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 2 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 3 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 4 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 5 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 6 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 7 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 8 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 9 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 10 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - public static IObservable WhenAnyObservable(this TSender? sender, Expression?>> obs1, Expression?>> obs2, Expression?>> obs3, Expression?>> obs4, Expression?>> obs5, Expression?>> obs6, Expression?>> obs7, Expression?>> obs8, Expression?>> obs9, Expression?>> obs10) - where TSender : class - { - return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, obs7, obs8, obs9, obs10, (o1, o2, o3, o4, o5, o6, o7, o8, o9, o10) => new[] {o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), o7.Value!.EmptyIfNull(), o8.Value!.EmptyIfNull(), o9.Value!.EmptyIfNull(), o10.Value!.EmptyIfNull()}) - .Select(x => x.Merge()).Switch(); - } - /// Monitor a property that is an observable, and subscribe to the most recent emitted value. - /// The object where the property chain starts. - /// The 1 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 2 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 3 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 4 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 5 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 6 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 7 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 8 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 9 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 10 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 11 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - public static IObservable WhenAnyObservable(this TSender? sender, Expression?>> obs1, Expression?>> obs2, Expression?>> obs3, Expression?>> obs4, Expression?>> obs5, Expression?>> obs6, Expression?>> obs7, Expression?>> obs8, Expression?>> obs9, Expression?>> obs10, Expression?>> obs11) - where TSender : class - { - return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, obs7, obs8, obs9, obs10, obs11, (o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11) => new[] {o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), o7.Value!.EmptyIfNull(), o8.Value!.EmptyIfNull(), o9.Value!.EmptyIfNull(), o10.Value!.EmptyIfNull(), o11.Value!.EmptyIfNull()}) - .Select(x => x.Merge()).Switch(); - } - /// Monitor a property that is an observable, and subscribe to the most recent emitted value. - /// The object where the property chain starts. - /// The 1 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 2 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 3 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 4 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 5 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 6 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 7 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 8 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 9 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 10 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 11 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - /// The 12 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. - public static IObservable WhenAnyObservable(this TSender? sender, Expression?>> obs1, Expression?>> obs2, Expression?>> obs3, Expression?>> obs4, Expression?>> obs5, Expression?>> obs6, Expression?>> obs7, Expression?>> obs8, Expression?>> obs9, Expression?>> obs10, Expression?>> obs11, Expression?>> obs12) - where TSender : class - { - return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, obs7, obs8, obs9, obs10, obs11, obs12, (o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12) => new[] {o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), o7.Value!.EmptyIfNull(), o8.Value!.EmptyIfNull(), o9.Value!.EmptyIfNull(), o10.Value!.EmptyIfNull(), o11.Value!.EmptyIfNull(), o12.Value!.EmptyIfNull()}) - .Select(x => x.Merge()).Switch(); - } + /// A mixin which provides support for subscribing to observable properties. + public static class WhenAnyObservableMixin + { + /// Observe a observable which is set to a property, and automatically subscribe to the most recent emitted value. + /// The object where the property chain starts. + /// The first observable to observe. + public static IObservable WhenAnyObservable(this TSender? sender, Expression?>> obs1) + where TSender : class + { + return sender.WhenAny(obs1, x => x.Value!.EmptyIfNull()).Switch(); + } - /// Monitor a property that is an observable, and subscribe to the most recent emitted value. - /// The object where the property chain starts. - /// The 1 property chain to reference. - /// The 2 property chain to reference. - /// The selector which will determine the final value from the properties. This must be an observable. - public static IObservable WhenAnyObservable(this TSender? sender, - Expression?>> obs1, - Expression?>> obs2, - Func selector) - where TSender : class - { - return sender.WhenAny(obs1, obs2, (o1, o2) => Observable.CombineLatest(o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), selector)) - .Switch(); - } - /// Monitor a property that is an observable, and subscribe to the most recent emitted value. - /// The object where the property chain starts. - /// The 1 property chain to reference. - /// The 2 property chain to reference. - /// The 3 property chain to reference. - /// The selector which will determine the final value from the properties. This must be an observable. - public static IObservable WhenAnyObservable(this TSender? sender, - Expression?>> obs1, - Expression?>> obs2, - Expression?>> obs3, - Func selector) - where TSender : class - { - return sender.WhenAny(obs1, obs2, obs3, (o1, o2, o3) => Observable.CombineLatest(o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), selector)) - .Switch(); - } - /// Monitor a property that is an observable, and subscribe to the most recent emitted value. - /// The object where the property chain starts. - /// The 1 property chain to reference. - /// The 2 property chain to reference. - /// The 3 property chain to reference. - /// The 4 property chain to reference. - /// The selector which will determine the final value from the properties. This must be an observable. - public static IObservable WhenAnyObservable(this TSender? sender, - Expression?>> obs1, - Expression?>> obs2, - Expression?>> obs3, - Expression?>> obs4, - Func selector) - where TSender : class - { - return sender.WhenAny(obs1, obs2, obs3, obs4, (o1, o2, o3, o4) => Observable.CombineLatest(o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), selector)) - .Switch(); - } - /// Monitor a property that is an observable, and subscribe to the most recent emitted value. - /// The object where the property chain starts. - /// The 1 property chain to reference. - /// The 2 property chain to reference. - /// The 3 property chain to reference. - /// The 4 property chain to reference. - /// The 5 property chain to reference. - /// The selector which will determine the final value from the properties. This must be an observable. - public static IObservable WhenAnyObservable(this TSender? sender, - Expression?>> obs1, - Expression?>> obs2, - Expression?>> obs3, - Expression?>> obs4, - Expression?>> obs5, - Func selector) - where TSender : class - { - return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, (o1, o2, o3, o4, o5) => Observable.CombineLatest(o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), selector)) - .Switch(); - } - /// Monitor a property that is an observable, and subscribe to the most recent emitted value. - /// The object where the property chain starts. - /// The 1 property chain to reference. - /// The 2 property chain to reference. - /// The 3 property chain to reference. - /// The 4 property chain to reference. - /// The 5 property chain to reference. - /// The 6 property chain to reference. - /// The selector which will determine the final value from the properties. This must be an observable. - public static IObservable WhenAnyObservable(this TSender? sender, - Expression?>> obs1, - Expression?>> obs2, - Expression?>> obs3, - Expression?>> obs4, - Expression?>> obs5, - Expression?>> obs6, - Func selector) - where TSender : class - { - return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, (o1, o2, o3, o4, o5, o6) => Observable.CombineLatest(o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), selector)) - .Switch(); - } - /// Monitor a property that is an observable, and subscribe to the most recent emitted value. - /// The object where the property chain starts. - /// The 1 property chain to reference. - /// The 2 property chain to reference. - /// The 3 property chain to reference. - /// The 4 property chain to reference. - /// The 5 property chain to reference. - /// The 6 property chain to reference. - /// The 7 property chain to reference. - /// The selector which will determine the final value from the properties. This must be an observable. - public static IObservable WhenAnyObservable(this TSender? sender, - Expression?>> obs1, - Expression?>> obs2, - Expression?>> obs3, - Expression?>> obs4, - Expression?>> obs5, - Expression?>> obs6, - Expression?>> obs7, - Func selector) - where TSender : class - { - return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, obs7, (o1, o2, o3, o4, o5, o6, o7) => Observable.CombineLatest(o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), o7.Value!.EmptyIfNull(), selector)) - .Switch(); - } - /// Monitor a property that is an observable, and subscribe to the most recent emitted value. - /// The object where the property chain starts. - /// The 1 property chain to reference. - /// The 2 property chain to reference. - /// The 3 property chain to reference. - /// The 4 property chain to reference. - /// The 5 property chain to reference. - /// The 6 property chain to reference. - /// The 7 property chain to reference. - /// The 8 property chain to reference. - /// The selector which will determine the final value from the properties. This must be an observable. - public static IObservable WhenAnyObservable(this TSender? sender, - Expression?>> obs1, - Expression?>> obs2, - Expression?>> obs3, - Expression?>> obs4, - Expression?>> obs5, - Expression?>> obs6, - Expression?>> obs7, - Expression?>> obs8, - Func selector) - where TSender : class - { - return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, obs7, obs8, (o1, o2, o3, o4, o5, o6, o7, o8) => Observable.CombineLatest(o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), o7.Value!.EmptyIfNull(), o8.Value!.EmptyIfNull(), selector)) - .Switch(); - } - /// Monitor a property that is an observable, and subscribe to the most recent emitted value. - /// The object where the property chain starts. - /// The 1 property chain to reference. - /// The 2 property chain to reference. - /// The 3 property chain to reference. - /// The 4 property chain to reference. - /// The 5 property chain to reference. - /// The 6 property chain to reference. - /// The 7 property chain to reference. - /// The 8 property chain to reference. - /// The 9 property chain to reference. - /// The selector which will determine the final value from the properties. This must be an observable. - public static IObservable WhenAnyObservable(this TSender? sender, - Expression?>> obs1, - Expression?>> obs2, - Expression?>> obs3, - Expression?>> obs4, - Expression?>> obs5, - Expression?>> obs6, - Expression?>> obs7, - Expression?>> obs8, - Expression?>> obs9, - Func selector) - where TSender : class - { - return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, obs7, obs8, obs9, (o1, o2, o3, o4, o5, o6, o7, o8, o9) => Observable.CombineLatest(o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), o7.Value!.EmptyIfNull(), o8.Value!.EmptyIfNull(), o9.Value!.EmptyIfNull(), selector)) - .Switch(); - } - /// Monitor a property that is an observable, and subscribe to the most recent emitted value. - /// The object where the property chain starts. - /// The 1 property chain to reference. - /// The 2 property chain to reference. - /// The 3 property chain to reference. - /// The 4 property chain to reference. - /// The 5 property chain to reference. - /// The 6 property chain to reference. - /// The 7 property chain to reference. - /// The 8 property chain to reference. - /// The 9 property chain to reference. - /// The 10 property chain to reference. - /// The selector which will determine the final value from the properties. This must be an observable. - public static IObservable WhenAnyObservable(this TSender? sender, - Expression?>> obs1, - Expression?>> obs2, - Expression?>> obs3, - Expression?>> obs4, - Expression?>> obs5, - Expression?>> obs6, - Expression?>> obs7, - Expression?>> obs8, - Expression?>> obs9, - Expression?>> obs10, - Func selector) - where TSender : class - { - return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, obs7, obs8, obs9, obs10, (o1, o2, o3, o4, o5, o6, o7, o8, o9, o10) => Observable.CombineLatest(o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), o7.Value!.EmptyIfNull(), o8.Value!.EmptyIfNull(), o9.Value!.EmptyIfNull(), o10.Value!.EmptyIfNull(), selector)) - .Switch(); - } - /// Monitor a property that is an observable, and subscribe to the most recent emitted value. - /// The object where the property chain starts. - /// The 1 property chain to reference. - /// The 2 property chain to reference. - /// The 3 property chain to reference. - /// The 4 property chain to reference. - /// The 5 property chain to reference. - /// The 6 property chain to reference. - /// The 7 property chain to reference. - /// The 8 property chain to reference. - /// The 9 property chain to reference. - /// The 10 property chain to reference. - /// The 11 property chain to reference. - /// The selector which will determine the final value from the properties. This must be an observable. - public static IObservable WhenAnyObservable(this TSender? sender, - Expression?>> obs1, - Expression?>> obs2, - Expression?>> obs3, - Expression?>> obs4, - Expression?>> obs5, - Expression?>> obs6, - Expression?>> obs7, - Expression?>> obs8, - Expression?>> obs9, - Expression?>> obs10, - Expression?>> obs11, - Func selector) - where TSender : class - { - return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, obs7, obs8, obs9, obs10, obs11, (o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11) => Observable.CombineLatest(o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), o7.Value!.EmptyIfNull(), o8.Value!.EmptyIfNull(), o9.Value!.EmptyIfNull(), o10.Value!.EmptyIfNull(), o11.Value!.EmptyIfNull(), selector)) - .Switch(); - } - /// Monitor a property that is an observable, and subscribe to the most recent emitted value. - /// The object where the property chain starts. - /// The 1 property chain to reference. - /// The 2 property chain to reference. - /// The 3 property chain to reference. - /// The 4 property chain to reference. - /// The 5 property chain to reference. - /// The 6 property chain to reference. - /// The 7 property chain to reference. - /// The 8 property chain to reference. - /// The 9 property chain to reference. - /// The 10 property chain to reference. - /// The 11 property chain to reference. - /// The 12 property chain to reference. - /// The selector which will determine the final value from the properties. This must be an observable. - public static IObservable WhenAnyObservable(this TSender? sender, - Expression?>> obs1, - Expression?>> obs2, - Expression?>> obs3, - Expression?>> obs4, - Expression?>> obs5, - Expression?>> obs6, - Expression?>> obs7, - Expression?>> obs8, - Expression?>> obs9, - Expression?>> obs10, - Expression?>> obs11, - Expression?>> obs12, - Func selector) - where TSender : class - { - return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, obs7, obs8, obs9, obs10, obs11, obs12, (o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12) => Observable.CombineLatest(o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), o7.Value!.EmptyIfNull(), o8.Value!.EmptyIfNull(), o9.Value!.EmptyIfNull(), o10.Value!.EmptyIfNull(), o11.Value!.EmptyIfNull(), o12.Value!.EmptyIfNull(), selector)) - .Switch(); - } + /// Monitor a property that is an observable, and subscribe to the most recent emitted value. + /// The object where the property chain starts. + /// The 1 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 2 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + public static IObservable WhenAnyObservable(this TSender? sender, Expression?>> obs1, Expression?>> obs2) + where TSender : class + { + return sender.WhenAny(obs1, obs2, (o1, o2) => new[] {o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull()}) + .Select(x => x.Merge()).Switch(); + } + /// Monitor a property that is an observable, and subscribe to the most recent emitted value. + /// The object where the property chain starts. + /// The 1 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 2 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 3 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + public static IObservable WhenAnyObservable(this TSender? sender, Expression?>> obs1, Expression?>> obs2, Expression?>> obs3) + where TSender : class + { + return sender.WhenAny(obs1, obs2, obs3, (o1, o2, o3) => new[] {o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull()}) + .Select(x => x.Merge()).Switch(); + } + /// Monitor a property that is an observable, and subscribe to the most recent emitted value. + /// The object where the property chain starts. + /// The 1 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 2 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 3 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 4 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + public static IObservable WhenAnyObservable(this TSender? sender, Expression?>> obs1, Expression?>> obs2, Expression?>> obs3, Expression?>> obs4) + where TSender : class + { + return sender.WhenAny(obs1, obs2, obs3, obs4, (o1, o2, o3, o4) => new[] {o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull()}) + .Select(x => x.Merge()).Switch(); + } + /// Monitor a property that is an observable, and subscribe to the most recent emitted value. + /// The object where the property chain starts. + /// The 1 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 2 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 3 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 4 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 5 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + public static IObservable WhenAnyObservable(this TSender? sender, Expression?>> obs1, Expression?>> obs2, Expression?>> obs3, Expression?>> obs4, Expression?>> obs5) + where TSender : class + { + return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, (o1, o2, o3, o4, o5) => new[] {o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull()}) + .Select(x => x.Merge()).Switch(); + } + /// Monitor a property that is an observable, and subscribe to the most recent emitted value. + /// The object where the property chain starts. + /// The 1 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 2 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 3 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 4 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 5 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 6 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + public static IObservable WhenAnyObservable(this TSender? sender, Expression?>> obs1, Expression?>> obs2, Expression?>> obs3, Expression?>> obs4, Expression?>> obs5, Expression?>> obs6) + where TSender : class + { + return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, (o1, o2, o3, o4, o5, o6) => new[] {o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull()}) + .Select(x => x.Merge()).Switch(); + } + /// Monitor a property that is an observable, and subscribe to the most recent emitted value. + /// The object where the property chain starts. + /// The 1 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 2 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 3 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 4 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 5 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 6 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 7 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + public static IObservable WhenAnyObservable(this TSender? sender, Expression?>> obs1, Expression?>> obs2, Expression?>> obs3, Expression?>> obs4, Expression?>> obs5, Expression?>> obs6, Expression?>> obs7) + where TSender : class + { + return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, obs7, (o1, o2, o3, o4, o5, o6, o7) => new[] {o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), o7.Value!.EmptyIfNull()}) + .Select(x => x.Merge()).Switch(); + } + /// Monitor a property that is an observable, and subscribe to the most recent emitted value. + /// The object where the property chain starts. + /// The 1 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 2 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 3 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 4 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 5 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 6 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 7 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 8 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + public static IObservable WhenAnyObservable(this TSender? sender, Expression?>> obs1, Expression?>> obs2, Expression?>> obs3, Expression?>> obs4, Expression?>> obs5, Expression?>> obs6, Expression?>> obs7, Expression?>> obs8) + where TSender : class + { + return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, obs7, obs8, (o1, o2, o3, o4, o5, o6, o7, o8) => new[] {o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), o7.Value!.EmptyIfNull(), o8.Value!.EmptyIfNull()}) + .Select(x => x.Merge()).Switch(); + } + /// Monitor a property that is an observable, and subscribe to the most recent emitted value. + /// The object where the property chain starts. + /// The 1 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 2 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 3 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 4 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 5 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 6 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 7 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 8 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 9 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + public static IObservable WhenAnyObservable(this TSender? sender, Expression?>> obs1, Expression?>> obs2, Expression?>> obs3, Expression?>> obs4, Expression?>> obs5, Expression?>> obs6, Expression?>> obs7, Expression?>> obs8, Expression?>> obs9) + where TSender : class + { + return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, obs7, obs8, obs9, (o1, o2, o3, o4, o5, o6, o7, o8, o9) => new[] {o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), o7.Value!.EmptyIfNull(), o8.Value!.EmptyIfNull(), o9.Value!.EmptyIfNull()}) + .Select(x => x.Merge()).Switch(); + } + /// Monitor a property that is an observable, and subscribe to the most recent emitted value. + /// The object where the property chain starts. + /// The 1 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 2 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 3 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 4 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 5 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 6 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 7 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 8 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 9 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 10 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + public static IObservable WhenAnyObservable(this TSender? sender, Expression?>> obs1, Expression?>> obs2, Expression?>> obs3, Expression?>> obs4, Expression?>> obs5, Expression?>> obs6, Expression?>> obs7, Expression?>> obs8, Expression?>> obs9, Expression?>> obs10) + where TSender : class + { + return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, obs7, obs8, obs9, obs10, (o1, o2, o3, o4, o5, o6, o7, o8, o9, o10) => new[] {o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), o7.Value!.EmptyIfNull(), o8.Value!.EmptyIfNull(), o9.Value!.EmptyIfNull(), o10.Value!.EmptyIfNull()}) + .Select(x => x.Merge()).Switch(); + } + /// Monitor a property that is an observable, and subscribe to the most recent emitted value. + /// The object where the property chain starts. + /// The 1 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 2 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 3 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 4 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 5 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 6 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 7 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 8 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 9 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 10 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 11 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + public static IObservable WhenAnyObservable(this TSender? sender, Expression?>> obs1, Expression?>> obs2, Expression?>> obs3, Expression?>> obs4, Expression?>> obs5, Expression?>> obs6, Expression?>> obs7, Expression?>> obs8, Expression?>> obs9, Expression?>> obs10, Expression?>> obs11) + where TSender : class + { + return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, obs7, obs8, obs9, obs10, obs11, (o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11) => new[] {o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), o7.Value!.EmptyIfNull(), o8.Value!.EmptyIfNull(), o9.Value!.EmptyIfNull(), o10.Value!.EmptyIfNull(), o11.Value!.EmptyIfNull()}) + .Select(x => x.Merge()).Switch(); + } + /// Monitor a property that is an observable, and subscribe to the most recent emitted value. + /// The object where the property chain starts. + /// The 1 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 2 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 3 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 4 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 5 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 6 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 7 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 8 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 9 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 10 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 11 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + /// The 12 property chain to reference which ends with an observable. This will be a expression pointing to a end property or field which must be an observable. + public static IObservable WhenAnyObservable(this TSender? sender, Expression?>> obs1, Expression?>> obs2, Expression?>> obs3, Expression?>> obs4, Expression?>> obs5, Expression?>> obs6, Expression?>> obs7, Expression?>> obs8, Expression?>> obs9, Expression?>> obs10, Expression?>> obs11, Expression?>> obs12) + where TSender : class + { + return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, obs7, obs8, obs9, obs10, obs11, obs12, (o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12) => new[] {o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), o7.Value!.EmptyIfNull(), o8.Value!.EmptyIfNull(), o9.Value!.EmptyIfNull(), o10.Value!.EmptyIfNull(), o11.Value!.EmptyIfNull(), o12.Value!.EmptyIfNull()}) + .Select(x => x.Merge()).Switch(); + } + + /// Monitor a property that is an observable, and subscribe to the most recent emitted value. + /// The object where the property chain starts. + /// The 1 property chain to reference. + /// The 2 property chain to reference. + /// The selector which will determine the final value from the properties. This must be an observable. + public static IObservable WhenAnyObservable(this TSender? sender, + Expression?>> obs1, + Expression?>> obs2, + Func selector) + where TSender : class + { + return sender.WhenAny(obs1, obs2, (o1, o2) => Observable.CombineLatest(o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), selector)) + .Switch(); + } + /// Monitor a property that is an observable, and subscribe to the most recent emitted value. + /// The object where the property chain starts. + /// The 1 property chain to reference. + /// The 2 property chain to reference. + /// The 3 property chain to reference. + /// The selector which will determine the final value from the properties. This must be an observable. + public static IObservable WhenAnyObservable(this TSender? sender, + Expression?>> obs1, + Expression?>> obs2, + Expression?>> obs3, + Func selector) + where TSender : class + { + return sender.WhenAny(obs1, obs2, obs3, (o1, o2, o3) => Observable.CombineLatest(o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), selector)) + .Switch(); + } + /// Monitor a property that is an observable, and subscribe to the most recent emitted value. + /// The object where the property chain starts. + /// The 1 property chain to reference. + /// The 2 property chain to reference. + /// The 3 property chain to reference. + /// The 4 property chain to reference. + /// The selector which will determine the final value from the properties. This must be an observable. + public static IObservable WhenAnyObservable(this TSender? sender, + Expression?>> obs1, + Expression?>> obs2, + Expression?>> obs3, + Expression?>> obs4, + Func selector) + where TSender : class + { + return sender.WhenAny(obs1, obs2, obs3, obs4, (o1, o2, o3, o4) => Observable.CombineLatest(o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), selector)) + .Switch(); + } + /// Monitor a property that is an observable, and subscribe to the most recent emitted value. + /// The object where the property chain starts. + /// The 1 property chain to reference. + /// The 2 property chain to reference. + /// The 3 property chain to reference. + /// The 4 property chain to reference. + /// The 5 property chain to reference. + /// The selector which will determine the final value from the properties. This must be an observable. + public static IObservable WhenAnyObservable(this TSender? sender, + Expression?>> obs1, + Expression?>> obs2, + Expression?>> obs3, + Expression?>> obs4, + Expression?>> obs5, + Func selector) + where TSender : class + { + return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, (o1, o2, o3, o4, o5) => Observable.CombineLatest(o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), selector)) + .Switch(); + } + /// Monitor a property that is an observable, and subscribe to the most recent emitted value. + /// The object where the property chain starts. + /// The 1 property chain to reference. + /// The 2 property chain to reference. + /// The 3 property chain to reference. + /// The 4 property chain to reference. + /// The 5 property chain to reference. + /// The 6 property chain to reference. + /// The selector which will determine the final value from the properties. This must be an observable. + public static IObservable WhenAnyObservable(this TSender? sender, + Expression?>> obs1, + Expression?>> obs2, + Expression?>> obs3, + Expression?>> obs4, + Expression?>> obs5, + Expression?>> obs6, + Func selector) + where TSender : class + { + return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, (o1, o2, o3, o4, o5, o6) => Observable.CombineLatest(o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), selector)) + .Switch(); + } + /// Monitor a property that is an observable, and subscribe to the most recent emitted value. + /// The object where the property chain starts. + /// The 1 property chain to reference. + /// The 2 property chain to reference. + /// The 3 property chain to reference. + /// The 4 property chain to reference. + /// The 5 property chain to reference. + /// The 6 property chain to reference. + /// The 7 property chain to reference. + /// The selector which will determine the final value from the properties. This must be an observable. + public static IObservable WhenAnyObservable(this TSender? sender, + Expression?>> obs1, + Expression?>> obs2, + Expression?>> obs3, + Expression?>> obs4, + Expression?>> obs5, + Expression?>> obs6, + Expression?>> obs7, + Func selector) + where TSender : class + { + return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, obs7, (o1, o2, o3, o4, o5, o6, o7) => Observable.CombineLatest(o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), o7.Value!.EmptyIfNull(), selector)) + .Switch(); + } + /// Monitor a property that is an observable, and subscribe to the most recent emitted value. + /// The object where the property chain starts. + /// The 1 property chain to reference. + /// The 2 property chain to reference. + /// The 3 property chain to reference. + /// The 4 property chain to reference. + /// The 5 property chain to reference. + /// The 6 property chain to reference. + /// The 7 property chain to reference. + /// The 8 property chain to reference. + /// The selector which will determine the final value from the properties. This must be an observable. + public static IObservable WhenAnyObservable(this TSender? sender, + Expression?>> obs1, + Expression?>> obs2, + Expression?>> obs3, + Expression?>> obs4, + Expression?>> obs5, + Expression?>> obs6, + Expression?>> obs7, + Expression?>> obs8, + Func selector) + where TSender : class + { + return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, obs7, obs8, (o1, o2, o3, o4, o5, o6, o7, o8) => Observable.CombineLatest(o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), o7.Value!.EmptyIfNull(), o8.Value!.EmptyIfNull(), selector)) + .Switch(); + } + /// Monitor a property that is an observable, and subscribe to the most recent emitted value. + /// The object where the property chain starts. + /// The 1 property chain to reference. + /// The 2 property chain to reference. + /// The 3 property chain to reference. + /// The 4 property chain to reference. + /// The 5 property chain to reference. + /// The 6 property chain to reference. + /// The 7 property chain to reference. + /// The 8 property chain to reference. + /// The 9 property chain to reference. + /// The selector which will determine the final value from the properties. This must be an observable. + public static IObservable WhenAnyObservable(this TSender? sender, + Expression?>> obs1, + Expression?>> obs2, + Expression?>> obs3, + Expression?>> obs4, + Expression?>> obs5, + Expression?>> obs6, + Expression?>> obs7, + Expression?>> obs8, + Expression?>> obs9, + Func selector) + where TSender : class + { + return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, obs7, obs8, obs9, (o1, o2, o3, o4, o5, o6, o7, o8, o9) => Observable.CombineLatest(o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), o7.Value!.EmptyIfNull(), o8.Value!.EmptyIfNull(), o9.Value!.EmptyIfNull(), selector)) + .Switch(); + } + /// Monitor a property that is an observable, and subscribe to the most recent emitted value. + /// The object where the property chain starts. + /// The 1 property chain to reference. + /// The 2 property chain to reference. + /// The 3 property chain to reference. + /// The 4 property chain to reference. + /// The 5 property chain to reference. + /// The 6 property chain to reference. + /// The 7 property chain to reference. + /// The 8 property chain to reference. + /// The 9 property chain to reference. + /// The 10 property chain to reference. + /// The selector which will determine the final value from the properties. This must be an observable. + public static IObservable WhenAnyObservable(this TSender? sender, + Expression?>> obs1, + Expression?>> obs2, + Expression?>> obs3, + Expression?>> obs4, + Expression?>> obs5, + Expression?>> obs6, + Expression?>> obs7, + Expression?>> obs8, + Expression?>> obs9, + Expression?>> obs10, + Func selector) + where TSender : class + { + return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, obs7, obs8, obs9, obs10, (o1, o2, o3, o4, o5, o6, o7, o8, o9, o10) => Observable.CombineLatest(o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), o7.Value!.EmptyIfNull(), o8.Value!.EmptyIfNull(), o9.Value!.EmptyIfNull(), o10.Value!.EmptyIfNull(), selector)) + .Switch(); + } + /// Monitor a property that is an observable, and subscribe to the most recent emitted value. + /// The object where the property chain starts. + /// The 1 property chain to reference. + /// The 2 property chain to reference. + /// The 3 property chain to reference. + /// The 4 property chain to reference. + /// The 5 property chain to reference. + /// The 6 property chain to reference. + /// The 7 property chain to reference. + /// The 8 property chain to reference. + /// The 9 property chain to reference. + /// The 10 property chain to reference. + /// The 11 property chain to reference. + /// The selector which will determine the final value from the properties. This must be an observable. + public static IObservable WhenAnyObservable(this TSender? sender, + Expression?>> obs1, + Expression?>> obs2, + Expression?>> obs3, + Expression?>> obs4, + Expression?>> obs5, + Expression?>> obs6, + Expression?>> obs7, + Expression?>> obs8, + Expression?>> obs9, + Expression?>> obs10, + Expression?>> obs11, + Func selector) + where TSender : class + { + return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, obs7, obs8, obs9, obs10, obs11, (o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11) => Observable.CombineLatest(o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), o7.Value!.EmptyIfNull(), o8.Value!.EmptyIfNull(), o9.Value!.EmptyIfNull(), o10.Value!.EmptyIfNull(), o11.Value!.EmptyIfNull(), selector)) + .Switch(); + } + /// Monitor a property that is an observable, and subscribe to the most recent emitted value. + /// The object where the property chain starts. + /// The 1 property chain to reference. + /// The 2 property chain to reference. + /// The 3 property chain to reference. + /// The 4 property chain to reference. + /// The 5 property chain to reference. + /// The 6 property chain to reference. + /// The 7 property chain to reference. + /// The 8 property chain to reference. + /// The 9 property chain to reference. + /// The 10 property chain to reference. + /// The 11 property chain to reference. + /// The 12 property chain to reference. + /// The selector which will determine the final value from the properties. This must be an observable. + public static IObservable WhenAnyObservable(this TSender? sender, + Expression?>> obs1, + Expression?>> obs2, + Expression?>> obs3, + Expression?>> obs4, + Expression?>> obs5, + Expression?>> obs6, + Expression?>> obs7, + Expression?>> obs8, + Expression?>> obs9, + Expression?>> obs10, + Expression?>> obs11, + Expression?>> obs12, + Func selector) + where TSender : class + { + return sender.WhenAny(obs1, obs2, obs3, obs4, obs5, obs6, obs7, obs8, obs9, obs10, obs11, obs12, (o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12) => Observable.CombineLatest(o1.Value!.EmptyIfNull(), o2.Value!.EmptyIfNull(), o3.Value!.EmptyIfNull(), o4.Value!.EmptyIfNull(), o5.Value!.EmptyIfNull(), o6.Value!.EmptyIfNull(), o7.Value!.EmptyIfNull(), o8.Value!.EmptyIfNull(), o9.Value!.EmptyIfNull(), o10.Value!.EmptyIfNull(), o11.Value!.EmptyIfNull(), o12.Value!.EmptyIfNull(), selector)) + .Switch(); + } } -internal static class ObservableExtensions -{ - public static IObservable EmptyIfNull(this IObservable @this) + internal static class ObservableExtensions { - return @this ?? Observable.Empty; + public static IObservable EmptyIfNull(this IObservable @this) + { + return @this ?? Observable.Empty; + } } } diff --git a/src/ReactiveUI/VariadicTemplates.tt b/src/ReactiveUI/VariadicTemplates.tt index 2fbd9e110..adab02e46 100644 --- a/src/ReactiveUI/VariadicTemplates.tt +++ b/src/ReactiveUI/VariadicTemplates.tt @@ -44,11 +44,13 @@ namespace ReactiveUI /// /// The object where the property chain starts. /// The first property chain to reference. This will be a expression pointing to a end property or field. + /// if set to true [is distinct]. public static IObservable WhenAnyValue( this TSender? sender, - Expression> property1) + Expression> property1, + bool isDistinct = true) { - return sender!.WhenAny(property1, (IObservedChange c1) => c1.Value); + return sender!.WhenAny(property1, (IObservedChange c1) => c1.Value, isDistinct); } <# for(int length=1; length <= maxFuncLength; length++) { #> @@ -69,6 +71,7 @@ namespace ReactiveUI /// need an initial setup. /// /// The object where the property chain starts. + /// if set to true [is distinct]. <# for(int i=1; i <= length; i++) { #> /// The <#=i#> property chain to reference. This will be a expression pointing to a end property or field. <# } #>public static IObservable<(<#= String.Join(",", templParams) #>)> WhenAnyValue>( @@ -76,11 +79,13 @@ namespace ReactiveUI <# for(int i=1; i <= length; i++) { #> Expression>> property<#=i#><# if (i != length) { #>,<# } #> - <# } #>) + <# } #>, + bool isDistinct = true) { return sender!.WhenAny(<#= valuePropertyParams #>, (<#= valueSelectorParams #>) => - (<#= valueSelectorArgs #>)); + (<#= valueSelectorArgs #>), + isDistinct); } <# } #> @@ -95,16 +100,19 @@ namespace ReactiveUI <# for(int i=1; i <= length; i++) { #> /// The <#=i#> property chain to reference. This will be a expression pointing to a end property or field. <# } #>/// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. public static IObservable WhenAnyValue>( this TSender? sender, <# for(int i=1; i <= length; i++) { #> Expression>> property<#=i#>, <# } #> - Func<<#= String.Join(",", templParams) #>, TRet> selector) + Func<<#= String.Join(",", templParams) #>, TRet> selector, + bool isDistinct = true) { return sender!.WhenAny(<#= valuePropertyParams #>, (<#= valueSelectorParams #>) => - selector(<#= valueSelectorArgs #>)); + selector(<#= valueSelectorArgs #>), + isDistinct); } /// @@ -115,6 +123,7 @@ namespace ReactiveUI /// initial setup. /// /// The object where the property chain starts. + /// if set to true [is distinct]. <# for(int i=1; i <= length; i++) { #> /// The <#=i#> property chain to reference. This will be a expression pointing to a end property or field. <# } #>/// The selector which will determine the final value from the properties. @@ -123,14 +132,15 @@ namespace ReactiveUI <# for(int i=1; i <= length; i++) { #> Expression>> property<#=i#>, <# } #> - Func<<#= selectorTypeParams #>, TRet> selector) + Func<<#= selectorTypeParams #>, TRet> selector, + bool isDistinct = true) { <# if (length == 1){ #> - return sender!.ObservableForProperty(property<#=1#>, false, false).Select(selector); + return sender!.ObservableForProperty(property<#=1#>, false, false, isDistinct).Select(selector); <# }else{ #> return Observable.CombineLatest( <# for(int i=1; i <= length; i++) { #> - sender!.ObservableForProperty(property<#=i#>, false, false), + sender!.ObservableForProperty(property<#=i#>, false, false, isDistinct), <# } #> selector ); @@ -149,21 +159,23 @@ namespace ReactiveUI <# for(int i=1; i <= length; i++) { #> /// The <#=i#> property chain to reference. This will be a expression pointing to a end property or field. <# } #>/// The selector which will determine the final value from the properties. + /// if set to true [is distinct]. public static IObservable WhenAnyDynamic( this TSender? sender, <# for(int i=1; i <= length; i++) { #> Expression? property<#=i#>, <# } #> - Func<<#= dynamicSelectorTypeParams #>, TRet> selector) + Func<<#= dynamicSelectorTypeParams #>, TRet> selector, + bool isDistinct = true) { <# if (length == 1){ #> return ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property<#=1#>, false, false).Select(selector); + .SubscribeToExpressionChain(sender, property<#=1#>, false, false, isDistinct: isDistinct).Select(selector); <# }else{ #> return Observable.CombineLatest( <# for(int i=1; i <= length; i++) { #> ReactiveNotifyPropertyChangedMixin - .SubscribeToExpressionChain(sender, property<#=i#>, false, false), + .SubscribeToExpressionChain(sender, property<#=i#>, false, false, isDistinct: isDistinct), <# } #> selector );