From 0794afb672c92573fc5e99d91ad03aab5bc26f49 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 4 Oct 2025 00:26:47 +0000 Subject: [PATCH 1/4] chore(deps): update rx.net (system.reactive) to 6.1.0 --- src/Directory.Packages.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 4462cb1a21..9db9c55ae0 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -24,8 +24,8 @@ - - + + From d41e2774ed61564b7e74d98a58a6eb9553af72ed Mon Sep 17 00:00:00 2001 From: Chris Pulman Date: Sat, 4 Oct 2025 01:42:32 +0100 Subject: [PATCH 2/4] Refactor disposables: use System.Reactive.Disposables.Fluent Removed the local DisposableMixins implementation and updated global usings to reference System.Reactive.Disposables.Fluent. This change reduces code duplication and leverages the upstream implementation for DisposeWith and related extension methods. --- .../AOTCompatibilityTests.cs | 3 -- src/ReactiveUI.AOTTests/AdvancedAOTTests.cs | 3 -- .../AssemblyInfo.Parallel.cs | 2 -- .../ComprehensiveAOTMarkupTests.cs | 3 -- .../ComprehensiveAOTTests.cs | 3 -- .../FinalAOTValidationTests.cs | 3 -- src/ReactiveUI.AOTTests/GlobalUsings.cs | 4 +-- .../StringBasedObservationTests.cs | 4 --- .../StringBasedSemanticsTests.cs | 2 -- src/ReactiveUI.AOTTests/TestReactiveObject.cs | 3 -- .../ViewLocatorAOTMappingTests.cs | 2 -- src/ReactiveUI.Maui/GlobalUsings.cs | 1 + src/ReactiveUI/GlobalUsings.cs | 1 + src/ReactiveUI/Mixins/DisposableMixins.cs | 36 ------------------- 14 files changed, 4 insertions(+), 66 deletions(-) delete mode 100644 src/ReactiveUI/Mixins/DisposableMixins.cs diff --git a/src/ReactiveUI.AOTTests/AOTCompatibilityTests.cs b/src/ReactiveUI.AOTTests/AOTCompatibilityTests.cs index 48b6c0f8ad..aafd83ec7b 100644 --- a/src/ReactiveUI.AOTTests/AOTCompatibilityTests.cs +++ b/src/ReactiveUI.AOTTests/AOTCompatibilityTests.cs @@ -3,9 +3,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for full license information. -using System.Diagnostics.CodeAnalysis; -using System.Reactive.Linq; - namespace ReactiveUI.AOTTests; /// diff --git a/src/ReactiveUI.AOTTests/AdvancedAOTTests.cs b/src/ReactiveUI.AOTTests/AdvancedAOTTests.cs index 92ee4cac4c..e2fd8f9fed 100644 --- a/src/ReactiveUI.AOTTests/AdvancedAOTTests.cs +++ b/src/ReactiveUI.AOTTests/AdvancedAOTTests.cs @@ -3,11 +3,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for full license information. -using System.Diagnostics.CodeAnalysis; using System.Reactive.Disposables; -using System.Reactive.Linq; using System.Reactive.Subjects; -using Splat; namespace ReactiveUI.AOTTests; diff --git a/src/ReactiveUI.AOTTests/AssemblyInfo.Parallel.cs b/src/ReactiveUI.AOTTests/AssemblyInfo.Parallel.cs index 9516e8d004..eb6214b15b 100644 --- a/src/ReactiveUI.AOTTests/AssemblyInfo.Parallel.cs +++ b/src/ReactiveUI.AOTTests/AssemblyInfo.Parallel.cs @@ -3,7 +3,5 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for full license information. -using NUnit.Framework; - [assembly: Parallelizable(ParallelScope.Fixtures)] [assembly: LevelOfParallelism(4)] \ No newline at end of file diff --git a/src/ReactiveUI.AOTTests/ComprehensiveAOTMarkupTests.cs b/src/ReactiveUI.AOTTests/ComprehensiveAOTMarkupTests.cs index 9e2fba707c..865c96c06c 100644 --- a/src/ReactiveUI.AOTTests/ComprehensiveAOTMarkupTests.cs +++ b/src/ReactiveUI.AOTTests/ComprehensiveAOTMarkupTests.cs @@ -3,12 +3,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for full license information. -using System.Diagnostics.CodeAnalysis; using System.Reactive.Concurrency; using System.Reactive.Disposables; -using System.Reactive.Linq; using System.Reactive.Subjects; -using Splat; namespace ReactiveUI.AOTTests; diff --git a/src/ReactiveUI.AOTTests/ComprehensiveAOTTests.cs b/src/ReactiveUI.AOTTests/ComprehensiveAOTTests.cs index dcbf1cd87a..4f9b5d5fc6 100644 --- a/src/ReactiveUI.AOTTests/ComprehensiveAOTTests.cs +++ b/src/ReactiveUI.AOTTests/ComprehensiveAOTTests.cs @@ -3,12 +3,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for full license information. -using System.Diagnostics.CodeAnalysis; using System.Reactive.Concurrency; using System.Reactive.Disposables; -using System.Reactive.Linq; using System.Reactive.Subjects; -using Splat; namespace ReactiveUI.AOTTests; diff --git a/src/ReactiveUI.AOTTests/FinalAOTValidationTests.cs b/src/ReactiveUI.AOTTests/FinalAOTValidationTests.cs index 75edb583c1..97807fe9c6 100644 --- a/src/ReactiveUI.AOTTests/FinalAOTValidationTests.cs +++ b/src/ReactiveUI.AOTTests/FinalAOTValidationTests.cs @@ -3,13 +3,10 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for full license information. -using System.Diagnostics.CodeAnalysis; using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Disposables; -using System.Reactive.Linq; using System.Reactive.Subjects; -using Splat; namespace ReactiveUI.AOTTests; diff --git a/src/ReactiveUI.AOTTests/GlobalUsings.cs b/src/ReactiveUI.AOTTests/GlobalUsings.cs index 716d007c1a..f235253daf 100644 --- a/src/ReactiveUI.AOTTests/GlobalUsings.cs +++ b/src/ReactiveUI.AOTTests/GlobalUsings.cs @@ -9,6 +9,6 @@ global using global::System.Collections.Generic; global using global::System.Diagnostics.CodeAnalysis; global using global::System.Linq; +global using global::System.Reactive.Disposables.Fluent; global using global::System.Reactive.Linq; -global using global::System.Threading; -global using global::System.Threading.Tasks; \ No newline at end of file +global using global::System.Threading.Tasks; diff --git a/src/ReactiveUI.AOTTests/StringBasedObservationTests.cs b/src/ReactiveUI.AOTTests/StringBasedObservationTests.cs index 606ba422af..0e39952558 100644 --- a/src/ReactiveUI.AOTTests/StringBasedObservationTests.cs +++ b/src/ReactiveUI.AOTTests/StringBasedObservationTests.cs @@ -3,10 +3,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for full license information. -using System.Diagnostics.CodeAnalysis; -using System.Reactive.Concurrency; -using System.Reactive.Linq; - namespace ReactiveUI.AOTTests; /// diff --git a/src/ReactiveUI.AOTTests/StringBasedSemanticsTests.cs b/src/ReactiveUI.AOTTests/StringBasedSemanticsTests.cs index 476e6e1baf..eb77afeb83 100644 --- a/src/ReactiveUI.AOTTests/StringBasedSemanticsTests.cs +++ b/src/ReactiveUI.AOTTests/StringBasedSemanticsTests.cs @@ -3,8 +3,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for full license information. -using System.Reactive.Linq; - namespace ReactiveUI.AOTTests; /// diff --git a/src/ReactiveUI.AOTTests/TestReactiveObject.cs b/src/ReactiveUI.AOTTests/TestReactiveObject.cs index b85155b479..50247cbe92 100644 --- a/src/ReactiveUI.AOTTests/TestReactiveObject.cs +++ b/src/ReactiveUI.AOTTests/TestReactiveObject.cs @@ -3,9 +3,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for full license information. -using System.Diagnostics.CodeAnalysis; -using System.Reactive.Linq; - namespace ReactiveUI.AOTTests; /// diff --git a/src/ReactiveUI.AOTTests/ViewLocatorAOTMappingTests.cs b/src/ReactiveUI.AOTTests/ViewLocatorAOTMappingTests.cs index 174b1b5e92..6e4f3ff665 100644 --- a/src/ReactiveUI.AOTTests/ViewLocatorAOTMappingTests.cs +++ b/src/ReactiveUI.AOTTests/ViewLocatorAOTMappingTests.cs @@ -3,8 +3,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for full license information. -using System.Reactive.Linq; - namespace ReactiveUI.AOTTests; /// diff --git a/src/ReactiveUI.Maui/GlobalUsings.cs b/src/ReactiveUI.Maui/GlobalUsings.cs index df413c9efa..502eb74165 100644 --- a/src/ReactiveUI.Maui/GlobalUsings.cs +++ b/src/ReactiveUI.Maui/GlobalUsings.cs @@ -10,6 +10,7 @@ global using System.Reactive; global using System.Reactive.Concurrency; global using System.Reactive.Disposables; +global using System.Reactive.Disposables.Fluent; global using System.Reactive.Linq; global using System.Reactive.Subjects; global using System.Threading.Tasks; diff --git a/src/ReactiveUI/GlobalUsings.cs b/src/ReactiveUI/GlobalUsings.cs index 910b59068c..ba0e64eb93 100644 --- a/src/ReactiveUI/GlobalUsings.cs +++ b/src/ReactiveUI/GlobalUsings.cs @@ -17,6 +17,7 @@ global using global::System.Reactive; global using global::System.Reactive.Concurrency; global using global::System.Reactive.Disposables; +global using global::System.Reactive.Disposables.Fluent; global using global::System.Reactive.Linq; global using global::System.Reactive.Subjects; global using global::System.Reactive.Threading.Tasks; diff --git a/src/ReactiveUI/Mixins/DisposableMixins.cs b/src/ReactiveUI/Mixins/DisposableMixins.cs deleted file mode 100644 index fe61cac7b3..0000000000 --- a/src/ReactiveUI/Mixins/DisposableMixins.cs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) 2025 .NET Foundation and Contributors. All rights reserved. -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for full license information. - -namespace System.Reactive.Disposables; - -/// -/// Extension methods associated with the IDisposable interface. -/// -public static class DisposableMixins -{ - /// - /// Ensures the provided disposable is disposed with the specified . - /// - /// - /// The type of the disposable. - /// - /// - /// The disposable we are going to want to be disposed by the CompositeDisposable. - /// - /// - /// The to which will be added. - /// - /// - /// The disposable. - /// - public static T DisposeWith(this T item, CompositeDisposable compositeDisposable) - where T : IDisposable - { - compositeDisposable.ArgumentNullExceptionThrowIfNull(nameof(compositeDisposable)); - - compositeDisposable.Add(item); - return item; - } -} From 7ee73c840a65c1aacedcc6eadbc9069a78fbda31 Mon Sep 17 00:00:00 2001 From: Chris Pulman Date: Sat, 4 Oct 2025 01:50:37 +0100 Subject: [PATCH 3/4] Add System.Reactive.Disposables.Fluent imports Added global and local using directives for System.Reactive.Disposables.Fluent in Blazor and WPF app views to enable fluent disposable extensions. --- src/ReactiveUI.Blazor/GlobalUsings.cs | 1 + src/ReactiveUI.Builder.WpfApp/Views/ChatRoomView.xaml.cs | 1 + src/ReactiveUI.Builder.WpfApp/Views/LobbyView.xaml.cs | 1 + 3 files changed, 3 insertions(+) diff --git a/src/ReactiveUI.Blazor/GlobalUsings.cs b/src/ReactiveUI.Blazor/GlobalUsings.cs index c0e66f02bd..60b0425a4d 100644 --- a/src/ReactiveUI.Blazor/GlobalUsings.cs +++ b/src/ReactiveUI.Blazor/GlobalUsings.cs @@ -11,5 +11,6 @@ global using global::System.Reactive; global using global::System.Reactive.Concurrency; global using global::System.Reactive.Disposables; +global using global::System.Reactive.Disposables.Fluent; global using global::System.Reactive.Linq; global using global::System.Reactive.Subjects; diff --git a/src/ReactiveUI.Builder.WpfApp/Views/ChatRoomView.xaml.cs b/src/ReactiveUI.Builder.WpfApp/Views/ChatRoomView.xaml.cs index dd4b42d551..21d2f5e977 100644 --- a/src/ReactiveUI.Builder.WpfApp/Views/ChatRoomView.xaml.cs +++ b/src/ReactiveUI.Builder.WpfApp/Views/ChatRoomView.xaml.cs @@ -4,6 +4,7 @@ // See the LICENSE file in the project root for full license information. using System.Reactive.Disposables; +using System.Reactive.Disposables.Fluent; using System.Windows; using ReactiveUI.Builder.WpfApp.ViewModels; diff --git a/src/ReactiveUI.Builder.WpfApp/Views/LobbyView.xaml.cs b/src/ReactiveUI.Builder.WpfApp/Views/LobbyView.xaml.cs index c1af1208fe..a899070a3d 100644 --- a/src/ReactiveUI.Builder.WpfApp/Views/LobbyView.xaml.cs +++ b/src/ReactiveUI.Builder.WpfApp/Views/LobbyView.xaml.cs @@ -4,6 +4,7 @@ // See the LICENSE file in the project root for full license information. using System.Reactive.Disposables; +using System.Reactive.Disposables.Fluent; using System.Reactive.Linq; using System.Windows; using System.Windows.Input; From 3a8c3f5ee9396b8a8f843f6355b5804692e73cce Mon Sep 17 00:00:00 2001 From: Glenn <5834289+glennawatson@users.noreply.github.com> Date: Sat, 4 Oct 2025 10:58:58 +1000 Subject: [PATCH 4/4] Fix missing newline at end of Directory.Packages.props