From 71c0e6891565f84832e429c96ef06d93cf99b3ad Mon Sep 17 00:00:00 2001 From: "Darrin W. Cullop" Date: Fri, 15 Dec 2023 20:00:52 -0800 Subject: [PATCH] housekeeping: Merged Sealing of List Internals (#796) Co-authored-by: Chris Pulman --- src/DynamicData/List/Internal/AutoRefresh.cs | 2 +- src/DynamicData/List/Internal/ChangeSetMergeTracker.cs | 2 +- src/DynamicData/List/Internal/DeferUntilLoaded.cs | 2 +- src/DynamicData/List/Internal/EditDiff.cs | 2 +- src/DynamicData/List/Internal/Filter.cs | 2 +- src/DynamicData/List/Internal/FilterOnObservable.cs | 2 +- src/DynamicData/List/Internal/FilterOnProperty.cs | 2 +- src/DynamicData/List/Internal/FilterStatic.cs | 2 +- src/DynamicData/List/Internal/Group.cs | 2 +- src/DynamicData/List/Internal/Pager.cs | 2 +- src/DynamicData/List/Internal/QueryWhenChanged.cs | 2 +- src/DynamicData/List/Internal/RefCount.cs | 2 +- src/DynamicData/List/Internal/ReferenceCountTracker.cs | 2 +- src/DynamicData/List/Internal/ToObservableChangeSet.cs | 2 +- src/DynamicData/List/Internal/TransformAsync.cs | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/DynamicData/List/Internal/AutoRefresh.cs b/src/DynamicData/List/Internal/AutoRefresh.cs index 0ceb73783..7b6d0f7fc 100644 --- a/src/DynamicData/List/Internal/AutoRefresh.cs +++ b/src/DynamicData/List/Internal/AutoRefresh.cs @@ -10,7 +10,7 @@ namespace DynamicData.List.Internal; -internal class AutoRefresh(IObservable> source, Func> reEvaluator, TimeSpan? buffer = null, IScheduler? scheduler = null) +internal sealed class AutoRefresh(IObservable> source, Func> reEvaluator, TimeSpan? buffer = null, IScheduler? scheduler = null) where TObject : notnull { private readonly Func> _reEvaluator = reEvaluator ?? throw new ArgumentNullException(nameof(reEvaluator)); diff --git a/src/DynamicData/List/Internal/ChangeSetMergeTracker.cs b/src/DynamicData/List/Internal/ChangeSetMergeTracker.cs index 465837582..b518116be 100644 --- a/src/DynamicData/List/Internal/ChangeSetMergeTracker.cs +++ b/src/DynamicData/List/Internal/ChangeSetMergeTracker.cs @@ -4,7 +4,7 @@ namespace DynamicData.List.Internal; -internal class ChangeSetMergeTracker +internal sealed class ChangeSetMergeTracker where TObject : notnull { private readonly ChangeAwareList _resultList = new(); diff --git a/src/DynamicData/List/Internal/DeferUntilLoaded.cs b/src/DynamicData/List/Internal/DeferUntilLoaded.cs index ae70ffae8..115fd8e88 100644 --- a/src/DynamicData/List/Internal/DeferUntilLoaded.cs +++ b/src/DynamicData/List/Internal/DeferUntilLoaded.cs @@ -8,7 +8,7 @@ namespace DynamicData.List.Internal; -internal class DeferUntilLoaded(IObservable> source) +internal sealed class DeferUntilLoaded(IObservable> source) where T : notnull { private readonly IObservable> _source = source ?? throw new ArgumentNullException(nameof(source)); diff --git a/src/DynamicData/List/Internal/EditDiff.cs b/src/DynamicData/List/Internal/EditDiff.cs index d5c645fb2..97af3b848 100644 --- a/src/DynamicData/List/Internal/EditDiff.cs +++ b/src/DynamicData/List/Internal/EditDiff.cs @@ -6,7 +6,7 @@ namespace DynamicData.List.Internal; -internal class EditDiff(ISourceList source, IEqualityComparer? equalityComparer) +internal sealed class EditDiff(ISourceList source, IEqualityComparer? equalityComparer) where T : notnull { private readonly IEqualityComparer _equalityComparer = equalityComparer ?? EqualityComparer.Default; diff --git a/src/DynamicData/List/Internal/Filter.cs b/src/DynamicData/List/Internal/Filter.cs index c69db656a..79df2e89d 100644 --- a/src/DynamicData/List/Internal/Filter.cs +++ b/src/DynamicData/List/Internal/Filter.cs @@ -8,7 +8,7 @@ namespace DynamicData.List.Internal; -internal class Filter +internal sealed class Filter where T : notnull { private readonly ListFilterPolicy _policy; diff --git a/src/DynamicData/List/Internal/FilterOnObservable.cs b/src/DynamicData/List/Internal/FilterOnObservable.cs index fab810937..3ee229a38 100644 --- a/src/DynamicData/List/Internal/FilterOnObservable.cs +++ b/src/DynamicData/List/Internal/FilterOnObservable.cs @@ -8,7 +8,7 @@ namespace DynamicData.List.Internal; -internal class FilterOnObservable(IObservable> source, Func> filter, TimeSpan? buffer = null, IScheduler? scheduler = null) +internal sealed class FilterOnObservable(IObservable> source, Func> filter, TimeSpan? buffer = null, IScheduler? scheduler = null) where TObject : notnull { private readonly Func> _filter = filter ?? throw new ArgumentNullException(nameof(filter)); diff --git a/src/DynamicData/List/Internal/FilterOnProperty.cs b/src/DynamicData/List/Internal/FilterOnProperty.cs index ccd17ddb0..a2b7f9112 100644 --- a/src/DynamicData/List/Internal/FilterOnProperty.cs +++ b/src/DynamicData/List/Internal/FilterOnProperty.cs @@ -9,7 +9,7 @@ namespace DynamicData.List.Internal; [Obsolete("Use AutoRefresh(), followed by Filter() instead")] -internal class FilterOnProperty(IObservable> source, Expression> propertySelector, Func predicate, TimeSpan? throttle = null, IScheduler? scheduler = null) +internal sealed class FilterOnProperty(IObservable> source, Expression> propertySelector, Func predicate, TimeSpan? throttle = null, IScheduler? scheduler = null) where TObject : INotifyPropertyChanged { public IObservable> Run() => source.AutoRefresh(propertySelector, propertyChangeThrottle: throttle, scheduler: scheduler).Filter(predicate); diff --git a/src/DynamicData/List/Internal/FilterStatic.cs b/src/DynamicData/List/Internal/FilterStatic.cs index 83ac36e4b..be99eaff9 100644 --- a/src/DynamicData/List/Internal/FilterStatic.cs +++ b/src/DynamicData/List/Internal/FilterStatic.cs @@ -6,7 +6,7 @@ namespace DynamicData.List.Internal; -internal class FilterStatic(IObservable> source, Func predicate) +internal sealed class FilterStatic(IObservable> source, Func predicate) where T : notnull { private readonly Func _predicate = predicate ?? throw new ArgumentNullException(nameof(predicate)); diff --git a/src/DynamicData/List/Internal/Group.cs b/src/DynamicData/List/Internal/Group.cs index 4586c344a..dfe64957a 100644 --- a/src/DynamicData/List/Internal/Group.cs +++ b/src/DynamicData/List/Internal/Group.cs @@ -4,7 +4,7 @@ namespace DynamicData.List.Internal; -internal class Group(TGroup groupKey) : IGroup, IDisposable, IEquatable> +internal sealed class Group(TGroup groupKey) : IGroup, IDisposable, IEquatable> where TObject : notnull { public TGroup GroupKey { get; } = groupKey; diff --git a/src/DynamicData/List/Internal/Pager.cs b/src/DynamicData/List/Internal/Pager.cs index 723d1cb83..6a53a4bb1 100644 --- a/src/DynamicData/List/Internal/Pager.cs +++ b/src/DynamicData/List/Internal/Pager.cs @@ -7,7 +7,7 @@ namespace DynamicData.List.Internal; -internal class Pager(IObservable> source, IObservable requests) +internal sealed class Pager(IObservable> source, IObservable requests) where T : notnull { private readonly IObservable _requests = requests ?? throw new ArgumentNullException(nameof(requests)); diff --git a/src/DynamicData/List/Internal/QueryWhenChanged.cs b/src/DynamicData/List/Internal/QueryWhenChanged.cs index 71f169874..54ac665f6 100644 --- a/src/DynamicData/List/Internal/QueryWhenChanged.cs +++ b/src/DynamicData/List/Internal/QueryWhenChanged.cs @@ -8,7 +8,7 @@ namespace DynamicData.List.Internal; -internal class QueryWhenChanged(IObservable> source) +internal sealed class QueryWhenChanged(IObservable> source) where T : notnull { private readonly IObservable> _source = source ?? throw new ArgumentNullException(nameof(source)); diff --git a/src/DynamicData/List/Internal/RefCount.cs b/src/DynamicData/List/Internal/RefCount.cs index 329064207..ee9f75d47 100644 --- a/src/DynamicData/List/Internal/RefCount.cs +++ b/src/DynamicData/List/Internal/RefCount.cs @@ -7,7 +7,7 @@ namespace DynamicData.List.Internal; -internal class RefCount(IObservable> source) +internal sealed class RefCount(IObservable> source) where T : notnull { private readonly object _locker = new(); diff --git a/src/DynamicData/List/Internal/ReferenceCountTracker.cs b/src/DynamicData/List/Internal/ReferenceCountTracker.cs index b9fed75f2..bb3e92dc7 100644 --- a/src/DynamicData/List/Internal/ReferenceCountTracker.cs +++ b/src/DynamicData/List/Internal/ReferenceCountTracker.cs @@ -9,7 +9,7 @@ namespace DynamicData.List.Internal; /// Thanks dudes. /// /// The type of the item. -internal class ReferenceCountTracker +internal sealed class ReferenceCountTracker where T : notnull { public IEnumerable Items => ReferenceCounts.Keys; diff --git a/src/DynamicData/List/Internal/ToObservableChangeSet.cs b/src/DynamicData/List/Internal/ToObservableChangeSet.cs index 8ef2ff14f..6f8c9152f 100644 --- a/src/DynamicData/List/Internal/ToObservableChangeSet.cs +++ b/src/DynamicData/List/Internal/ToObservableChangeSet.cs @@ -9,7 +9,7 @@ namespace DynamicData.List.Internal; -internal class ToObservableChangeSet +internal sealed class ToObservableChangeSet where TObject : notnull { private readonly Func? _expireAfter; diff --git a/src/DynamicData/List/Internal/TransformAsync.cs b/src/DynamicData/List/Internal/TransformAsync.cs index cd9ba7374..c1b8daa5f 100644 --- a/src/DynamicData/List/Internal/TransformAsync.cs +++ b/src/DynamicData/List/Internal/TransformAsync.cs @@ -7,7 +7,7 @@ namespace DynamicData.List.Internal; -internal class TransformAsync +internal sealed class TransformAsync where TSource : notnull where TDestination : notnull {