diff --git a/src/Primitives.Shared/LinqExtensions.cs b/src/Primitives.Shared/LinqExtensions.cs
index ec09a3be..cfc1b884 100644
--- a/src/Primitives.Shared/LinqExtensions.cs
+++ b/src/Primitives.Shared/LinqExtensions.cs
@@ -11,19 +11,10 @@ namespace ReactiveUI.Primitives;
/// Miscellaneous Primitives extensions.
public static partial class LinqExtensions
{
- /// Disposal-tracking operators for a disposable.
+ /// Disposal operators for a disposable.
/// The disposable.
extension(IDisposable disposable)
{
- /// Disposes the IDisposable with the disposables instance.
- /// The disposables.
- /// An IDisposable.
- public IDisposable DisposeWith(MultipleDisposable disposables)
- {
- disposables?.Add(disposable);
- return disposable;
- }
-
/// Disposes the with.
/// A SingleDisposable.
public SingleDisposable DisposeWith() =>
@@ -76,4 +67,22 @@ public IObservable> Buffer(int count, int skip)
return new BufferCountSignal(source, count, skip);
}
}
+
+ /// Disposal-tracking operators for a disposable.
+ /// The disposable type.
+ /// The disposable.
+ extension(T disposable)
+ where T : IDisposable
+ {
+ /// Disposes the IDisposable with the disposables instance.
+ /// The disposables.
+ /// The original disposable.
+ public T DisposeWith(MultipleDisposable disposables)
+ {
+ ArgumentExceptionHelper.ThrowIfNull(disposables);
+
+ disposables.Add(disposable);
+ return disposable;
+ }
+ }
}
diff --git a/src/ReactiveUI.Primitives.Reactive/PublicAPI/net10.0-android/PublicAPI.txt b/src/ReactiveUI.Primitives.Reactive/PublicAPI/net10.0-android/PublicAPI.txt
index 0ba3c32f..aa6ead83 100644
--- a/src/ReactiveUI.Primitives.Reactive/PublicAPI/net10.0-android/PublicAPI.txt
+++ b/src/ReactiveUI.Primitives.Reactive/PublicAPI/net10.0-android/PublicAPI.txt
@@ -420,9 +420,12 @@ namespace ReactiveUI.Primitives.Reactive
extension(System.IDisposable disposable)
{
public ReactiveUI.Primitives.Disposables.SingleDisposable DisposeWith() { }
- public System.IDisposable DisposeWith(ReactiveUI.Primitives.Disposables.MultipleDisposable disposables) { }
public ReactiveUI.Primitives.Disposables.SingleDisposable DisposeWith(System.Action? action) { }
}
+ extension(T disposable) where T : System.IDisposable
+ {
+ public T DisposeWith(ReactiveUI.Primitives.Disposables.MultipleDisposable disposables) { }
+ }
extension(System.IObservable