Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Housekeeping: Seal More Internals #799

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/DynamicData.Tests/Domain/Animal.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public enum AnimalFamily
Bird
}

public class Animal(string name, string type, AnimalFamily family, bool include = true, int? id = null) : AbstractNotifyPropertyChanged
public sealed class Animal(string name, string type, AnimalFamily family, bool include = true, int? id = null) : AbstractNotifyPropertyChanged
{
private static int s_counter;

Expand All @@ -46,7 +46,7 @@ public bool IncludeInResults
public override int GetHashCode() => HashCode.Combine(Id, Name, Family, Type);
}

public class AnimalEqualityComparer : IEqualityComparer<Animal>
public sealed class AnimalEqualityComparer : IEqualityComparer<Animal>
{
public static AnimalEqualityComparer Instance { get; } = new();

Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData.Tests/Domain/AnimalOwner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

namespace DynamicData.Tests.Domain;

internal class AnimalOwner(string name, Guid? id = null, bool include = true) : AbstractNotifyPropertyChanged, IDisposable
internal sealed class AnimalOwner(string name, Guid? id = null, bool include = true) : AbstractNotifyPropertyChanged, IDisposable
{
private bool _includeInResults = include;

Expand Down
4 changes: 2 additions & 2 deletions src/DynamicData.Tests/Domain/Market.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ internal interface IMarket
public IObservable<IChangeSet<MarketPrice, int>> LatestPrices { get; }
}

internal class Market : IMarket, IDisposable
internal sealed class Market : IMarket, IDisposable
{
private readonly ISourceCache<MarketPrice, int> _latestPrices = new SourceCache<MarketPrice, int>(p => p.ItemId);

Expand Down Expand Up @@ -108,7 +108,7 @@ public int Compare([DisallowNull] IMarket x, [DisallowNull] IMarket y) =>
}


internal class FixedMarket : IMarket
internal sealed class FixedMarket : IMarket
{
public FixedMarket(Func<decimal> getPrice, int minId, int maxId, bool completable = true)
{
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData.Tests/Domain/MarketPrice.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

namespace DynamicData.Tests.Domain;

internal class MarketPrice
internal sealed class MarketPrice
{
public static IEqualityComparer<MarketPrice> EqualityComparer { get; } = new CurrentPriceEqualityComparer();
public static IEqualityComparer<MarketPrice> EqualityComparerWithTimeStamp { get; } = new TimeStampPriceEqualityComparer();
Expand Down
6 changes: 3 additions & 3 deletions src/DynamicData.Tests/Utilities/ComparerExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@

namespace DynamicData.Tests.Utilities;

internal class NoOpComparer<T> : IComparer<T>
internal sealed class NoOpComparer<T> : IComparer<T>
{
public int Compare(T x, T y) => throw new NotImplementedException();
}

internal class NoOpEqualityComparer<T> : IEqualityComparer<T>
internal sealed class NoOpEqualityComparer<T> : IEqualityComparer<T>
{
public bool Equals(T x, T y) => throw new NotImplementedException();
public int GetHashCode([DisallowNull] T obj) => throw new NotImplementedException();
}


internal class InvertedComparer<T>(IComparer<T> original) : IComparer<T>
internal sealed class InvertedComparer<T>(IComparer<T> original) : IComparer<T>
{
private readonly IComparer<T> _original = original;

Expand Down
4 changes: 2 additions & 2 deletions src/DynamicData/Aggregation/AggregateEnumerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

namespace DynamicData.Aggregation;

internal class AggregateEnumerator<T>(IChangeSet<T> source) : IAggregateChangeSet<T>
internal sealed class AggregateEnumerator<T>(IChangeSet<T> source) : IAggregateChangeSet<T>
where T : notnull
{
public IEnumerator<AggregateItem<T>> GetEnumerator()
Expand Down Expand Up @@ -54,7 +54,7 @@ public IEnumerator<AggregateItem<T>> GetEnumerator()
}

[SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "SA1402:File may only contain a single type", Justification = "Same name, different generics.")]
internal class AggregateEnumerator<TObject, TKey>(IChangeSet<TObject, TKey> source) : IAggregateChangeSet<TObject>
internal sealed class AggregateEnumerator<TObject, TKey>(IChangeSet<TObject, TKey> source) : IAggregateChangeSet<TObject>
where TObject : notnull
where TKey : notnull
{
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Binding/ObservablePropertyFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

namespace DynamicData.Binding;

internal class ObservablePropertyFactory<TObject, TProperty>
internal sealed class ObservablePropertyFactory<TObject, TProperty>
where TObject : INotifyPropertyChanged
{
private readonly Func<TObject, bool, IObservable<PropertyValue<TObject, TProperty>>> _factory;
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/DistinctChangeSet.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
// ReSharper disable once CheckNamespace
namespace DynamicData;

internal class DistinctChangeSet<T> : ChangeSet<T, T>, IDistinctChangeSet<T>
internal sealed class DistinctChangeSet<T> : ChangeSet<T, T>, IDistinctChangeSet<T>
where T : notnull
{
public DistinctChangeSet(IEnumerable<Change<T, T>> items)
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/AutoRefresh.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

namespace DynamicData.Cache.Internal;

internal class AutoRefresh<TObject, TKey, TAny>(IObservable<IChangeSet<TObject, TKey>> source, Func<TObject, TKey, IObservable<TAny>> reEvaluator, TimeSpan? buffer = null, IScheduler? scheduler = null)
internal sealed class AutoRefresh<TObject, TKey, TAny>(IObservable<IChangeSet<TObject, TKey>> source, Func<TObject, TKey, IObservable<TAny>> reEvaluator, TimeSpan? buffer = null, IScheduler? scheduler = null)
where TObject : notnull
where TKey : notnull
{
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/Cache.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
namespace DynamicData.Cache.Internal;

[DebuggerDisplay("Cache<{typeof(TObject).Name}, {typeof(TKey).Name}> ({Count} Items)")]
internal class Cache<TObject, TKey> : ICache<TObject, TKey>
internal sealed class Cache<TObject, TKey> : ICache<TObject, TKey>
where TObject : notnull
where TKey : notnull
{
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/CacheUpdater.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

namespace DynamicData.Cache.Internal;

internal class CacheUpdater<TObject, TKey> : ISourceUpdater<TObject, TKey>
internal sealed class CacheUpdater<TObject, TKey> : ISourceUpdater<TObject, TKey>
where TObject : notnull
where TKey : notnull
{
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/Cast.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

namespace DynamicData.Cache.Internal;

internal class Cast<TSource, TKey, TDestination>(IObservable<IChangeSet<TSource, TKey>> source, Func<TSource, TDestination> converter)
internal sealed class Cast<TSource, TKey, TDestination>(IObservable<IChangeSet<TSource, TKey>> source, Func<TSource, TDestination> converter)
where TSource : notnull
where TKey : notnull
where TDestination : notnull
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/ChangeSetCache.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ namespace DynamicData.Cache.Internal;
/// </summary>
/// <typeparam name="TObject">ChangeSet Object Type.</typeparam>
/// <typeparam name="TKey">ChangeSet Key Type.</typeparam>
internal class ChangeSetCache<TObject, TKey>
internal sealed class ChangeSetCache<TObject, TKey>
where TObject : notnull
where TKey : notnull
{
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/ChangeSetMergeTracker.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

namespace DynamicData.Cache.Internal;

internal class ChangeSetMergeTracker<TObject, TKey>(Func<IEnumerable<ChangeSetCache<TObject, TKey>>> selectCaches, IComparer<TObject>? comparer, IEqualityComparer<TObject>? equalityComparer)
internal sealed class ChangeSetMergeTracker<TObject, TKey>(Func<IEnumerable<ChangeSetCache<TObject, TKey>>> selectCaches, IComparer<TObject>? comparer, IEqualityComparer<TObject>? equalityComparer)
where TObject : notnull
where TKey : notnull
{
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/DeferUntilLoaded.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

namespace DynamicData.Cache.Internal;

internal class DeferUntilLoaded<TObject, TKey>
internal sealed class DeferUntilLoaded<TObject, TKey>
where TObject : notnull
where TKey : notnull
{
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/DynamicFilter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

namespace DynamicData.Cache.Internal;

internal class DynamicFilter<TObject, TKey>(IObservable<IChangeSet<TObject, TKey>> source, IObservable<Func<TObject, bool>> predicateChanged, IObservable<Unit>? refilterObservable = null, bool suppressEmptyChangeSets = true)
internal sealed class DynamicFilter<TObject, TKey>(IObservable<IChangeSet<TObject, TKey>> source, IObservable<Func<TObject, bool>> predicateChanged, IObservable<Unit>? refilterObservable = null, bool suppressEmptyChangeSets = true)
where TObject : notnull
where TKey : notnull
{
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/EditDiff.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

namespace DynamicData.Cache.Internal;

internal class EditDiff<TObject, TKey>(ISourceCache<TObject, TKey> source, Func<TObject, TObject, bool> areEqual)
internal sealed class EditDiff<TObject, TKey>(ISourceCache<TObject, TKey> source, Func<TObject, TObject, bool> areEqual)
where TObject : notnull
where TKey : notnull
{
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/FilterOnObservable.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

namespace DynamicData.Cache.Internal;

internal class FilterOnObservable<TObject, TKey>(IObservable<IChangeSet<TObject, TKey>> source, Func<TObject, TKey, IObservable<bool>> filterFactory, TimeSpan? buffer = null, IScheduler? scheduler = null)
internal sealed class FilterOnObservable<TObject, TKey>(IObservable<IChangeSet<TObject, TKey>> source, Func<TObject, TKey, IObservable<bool>> filterFactory, TimeSpan? buffer = null, IScheduler? scheduler = null)
where TObject : notnull
where TKey : notnull
{
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/FilterOnProperty.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
namespace DynamicData.Cache.Internal;

[Obsolete("Use AutoRefresh(), followed by Filter() instead")]
internal class FilterOnProperty<TObject, TKey, TProperty>(IObservable<IChangeSet<TObject, TKey>> source, Expression<Func<TObject, TProperty>> propertySelector, Func<TObject, bool> predicate, TimeSpan? throttle = null, IScheduler? scheduler = null)
internal sealed class FilterOnProperty<TObject, TKey, TProperty>(IObservable<IChangeSet<TObject, TKey>> source, Expression<Func<TObject, TProperty>> propertySelector, Func<TObject, bool> predicate, TimeSpan? throttle = null, IScheduler? scheduler = null)
where TObject : INotifyPropertyChanged
where TKey : notnull
{
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/FinallySafe.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

namespace DynamicData.Cache.Internal;

internal class FinallySafe<T>(IObservable<T> source, Action finallyAction)
internal sealed class FinallySafe<T>(IObservable<T> source, Action finallyAction)
{
private readonly Action _finallyAction = finallyAction ?? throw new ArgumentNullException(nameof(finallyAction));

Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/FullJoin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

namespace DynamicData.Cache.Internal;

internal class FullJoin<TLeft, TLeftKey, TRight, TRightKey, TDestination>(IObservable<IChangeSet<TLeft, TLeftKey>> left, IObservable<IChangeSet<TRight, TRightKey>> right, Func<TRight, TLeftKey> rightKeySelector, Func<TLeftKey, Optional<TLeft>, Optional<TRight>, TDestination> resultSelector)
internal sealed class FullJoin<TLeft, TLeftKey, TRight, TRightKey, TDestination>(IObservable<IChangeSet<TLeft, TLeftKey>> left, IObservable<IChangeSet<TRight, TRightKey>> right, Func<TRight, TLeftKey> rightKeySelector, Func<TLeftKey, Optional<TLeft>, Optional<TRight>, TDestination> resultSelector)
where TLeft : notnull
where TLeftKey : notnull
where TRight : notnull
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/FullJoinMany.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

namespace DynamicData.Cache.Internal;

internal class FullJoinMany<TLeft, TLeftKey, TRight, TRightKey, TDestination>(IObservable<IChangeSet<TLeft, TLeftKey>> left, IObservable<IChangeSet<TRight, TRightKey>> right, Func<TRight, TLeftKey> rightKeySelector, Func<TLeftKey, Optional<TLeft>, IGrouping<TRight, TRightKey, TLeftKey>, TDestination> resultSelector)
internal sealed class FullJoinMany<TLeft, TLeftKey, TRight, TRightKey, TDestination>(IObservable<IChangeSet<TLeft, TLeftKey>> left, IObservable<IChangeSet<TRight, TRightKey>> right, Func<TRight, TLeftKey> rightKeySelector, Func<TLeftKey, Optional<TLeft>, IGrouping<TRight, TRightKey, TLeftKey>, TDestination> resultSelector)
where TLeft : notnull
where TLeftKey : notnull
where TRight : notnull
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/GroupOnProperty.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

namespace DynamicData.Cache.Internal;

internal class GroupOnProperty<TObject, TKey, TGroup>(IObservable<IChangeSet<TObject, TKey>> source, Expression<Func<TObject, TGroup>> groupSelectorKey, TimeSpan? throttle = null, IScheduler? scheduler = null)
internal sealed class GroupOnProperty<TObject, TKey, TGroup>(IObservable<IChangeSet<TObject, TKey>> source, Expression<Func<TObject, TGroup>> groupSelectorKey, TimeSpan? throttle = null, IScheduler? scheduler = null)
where TObject : INotifyPropertyChanged
where TKey : notnull
where TGroup : notnull
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

namespace DynamicData.Cache.Internal;

internal class GroupOnPropertyWithImmutableState<TObject, TKey, TGroup>(IObservable<IChangeSet<TObject, TKey>> source, Expression<Func<TObject, TGroup>> groupSelectorKey, TimeSpan? throttle = null, IScheduler? scheduler = null)
internal sealed class GroupOnPropertyWithImmutableState<TObject, TKey, TGroup>(IObservable<IChangeSet<TObject, TKey>> source, Expression<Func<TObject, TGroup>> groupSelectorKey, TimeSpan? throttle = null, IScheduler? scheduler = null)
where TObject : INotifyPropertyChanged
where TKey : notnull
where TGroup : notnull
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/IndexAndNode.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ internal static class IndexAndNode
}

[SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "SA1402:File may only contain a single type", Justification = "Same class name, different generics.")]
internal class IndexAndNode<TNodeValue>(int index, LinkedListNode<TNodeValue> node)
internal sealed class IndexAndNode<TNodeValue>(int index, LinkedListNode<TNodeValue> node)
{
public int Index { get; } = index;

Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/InnerJoin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

namespace DynamicData.Cache.Internal;

internal class InnerJoin<TLeft, TLeftKey, TRight, TRightKey, TDestination>(IObservable<IChangeSet<TLeft, TLeftKey>> left, IObservable<IChangeSet<TRight, TRightKey>> right, Func<TRight, TLeftKey> rightKeySelector, Func<(TLeftKey leftKey, TRightKey rightKey), TLeft, TRight, TDestination> resultSelector)
internal sealed class InnerJoin<TLeft, TLeftKey, TRight, TRightKey, TDestination>(IObservable<IChangeSet<TLeft, TLeftKey>> left, IObservable<IChangeSet<TRight, TRightKey>> right, Func<TRight, TLeftKey> rightKeySelector, Func<(TLeftKey leftKey, TRightKey rightKey), TLeft, TRight, TDestination> resultSelector)
where TLeft : notnull
where TLeftKey : notnull
where TRight : notnull
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/InnerJoinMany.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace DynamicData.Cache.Internal;

internal class InnerJoinMany<TLeft, TLeftKey, TRight, TRightKey, TDestination>(IObservable<IChangeSet<TLeft, TLeftKey>> left, IObservable<IChangeSet<TRight, TRightKey>> right, Func<TRight, TLeftKey> rightKeySelector, Func<TLeftKey, TLeft, IGrouping<TRight, TRightKey, TLeftKey>, TDestination> resultSelector)
internal sealed class InnerJoinMany<TLeft, TLeftKey, TRight, TRightKey, TDestination>(IObservable<IChangeSet<TLeft, TLeftKey>> left, IObservable<IChangeSet<TRight, TRightKey>> right, Func<TRight, TLeftKey> rightKeySelector, Func<TLeftKey, TLeft, IGrouping<TRight, TRightKey, TLeftKey>, TDestination> resultSelector)
where TLeft : notnull
where TLeftKey : notnull
where TRight : notnull
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/KeyValueCollection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

namespace DynamicData.Cache.Internal;

internal class KeyValueCollection<TObject, TKey> : IKeyValueCollection<TObject, TKey>
internal sealed class KeyValueCollection<TObject, TKey> : IKeyValueCollection<TObject, TKey>
{
private readonly IReadOnlyCollection<KeyValuePair<TKey, TObject>> _items;

Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/KeyValueComparer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace DynamicData.Cache.Internal;

internal class KeyValueComparer<TObject, TKey>(IComparer<TObject>? comparer = null) : IComparer<KeyValuePair<TKey, TObject>>
internal sealed class KeyValueComparer<TObject, TKey>(IComparer<TObject>? comparer = null) : IComparer<KeyValuePair<TKey, TObject>>
{
public int Compare(KeyValuePair<TKey, TObject> x, KeyValuePair<TKey, TObject> y)
{
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/LeftJoin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

namespace DynamicData.Cache.Internal;

internal class LeftJoin<TLeft, TLeftKey, TRight, TRightKey, TDestination>(IObservable<IChangeSet<TLeft, TLeftKey>> left, IObservable<IChangeSet<TRight, TRightKey>> right, Func<TRight, TLeftKey> rightKeySelector, Func<TLeftKey, TLeft, Optional<TRight>, TDestination> resultSelector)
internal sealed class LeftJoin<TLeft, TLeftKey, TRight, TRightKey, TDestination>(IObservable<IChangeSet<TLeft, TLeftKey>> left, IObservable<IChangeSet<TRight, TRightKey>> right, Func<TRight, TLeftKey> rightKeySelector, Func<TLeftKey, TLeft, Optional<TRight>, TDestination> resultSelector)
where TLeft : notnull
where TLeftKey : notnull
where TRight : notnull
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/LeftJoinMany.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

namespace DynamicData.Cache.Internal;

internal class LeftJoinMany<TLeft, TLeftKey, TRight, TRightKey, TDestination>(IObservable<IChangeSet<TLeft, TLeftKey>> left, IObservable<IChangeSet<TRight, TRightKey>> right, Func<TRight, TLeftKey> rightKeySelector, Func<TLeftKey, TLeft, IGrouping<TRight, TRightKey, TLeftKey>, TDestination> resultSelector)
internal sealed class LeftJoinMany<TLeft, TLeftKey, TRight, TRightKey, TDestination>(IObservable<IChangeSet<TLeft, TLeftKey>> left, IObservable<IChangeSet<TRight, TRightKey>> right, Func<TRight, TLeftKey> rightKeySelector, Func<TLeftKey, TLeft, IGrouping<TRight, TRightKey, TLeftKey>, TDestination> resultSelector)
where TLeft : notnull
where TLeftKey : notnull
where TRight : notnull
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/MergeMany.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

namespace DynamicData.Cache.Internal;

internal class MergeMany<TObject, TKey, TDestination>
internal sealed class MergeMany<TObject, TKey, TDestination>
where TObject : notnull
where TKey : notnull
{
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/MergeManyItems.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

namespace DynamicData.Cache.Internal;

internal class MergeManyItems<TObject, TKey, TDestination>
internal sealed class MergeManyItems<TObject, TKey, TDestination>
where TObject : notnull
where TKey : notnull
{
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/Page.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

namespace DynamicData.Cache.Internal;

internal class Page<TObject, TKey>(IObservable<ISortedChangeSet<TObject, TKey>> source, IObservable<IPageRequest> pageRequests)
internal sealed class Page<TObject, TKey>(IObservable<ISortedChangeSet<TObject, TKey>> source, IObservable<IPageRequest> pageRequests)
where TObject : notnull
where TKey : notnull
{
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/QueryWhenChanged.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

namespace DynamicData.Cache.Internal;

internal class QueryWhenChanged<TObject, TKey, TValue>(IObservable<IChangeSet<TObject, TKey>> source, Func<TObject, IObservable<TValue>>? itemChangedTrigger = null)
internal sealed class QueryWhenChanged<TObject, TKey, TValue>(IObservable<IChangeSet<TObject, TKey>> source, Func<TObject, IObservable<TValue>>? itemChangedTrigger = null)
where TObject : notnull
where TKey : notnull
{
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/RefCount.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

namespace DynamicData.Cache.Internal;

internal class RefCount<TObject, TKey>(IObservable<IChangeSet<TObject, TKey>> source)
internal sealed class RefCount<TObject, TKey>(IObservable<IChangeSet<TObject, TKey>> source)
where TObject : notnull
where TKey : notnull
{
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/RemoveKeyEnumerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ namespace DynamicData.Cache.Internal;
/// An optional list, if provided it allows the refresh from a key based cache to find the index for the resulting list based refresh.
/// If not provided a refresh will dropdown to a replace which may ultimately result in a remove+add change downstream.
/// </param>
internal class RemoveKeyEnumerator<TObject, TKey>(IChangeSet<TObject, TKey> source, IExtendedList<TObject>? list = null) : IEnumerable<Change<TObject>>
internal sealed class RemoveKeyEnumerator<TObject, TKey>(IChangeSet<TObject, TKey> source, IExtendedList<TObject>? list = null) : IEnumerable<Change<TObject>>
where TObject : notnull
where TKey : notnull
{
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/RightJoin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

namespace DynamicData.Cache.Internal;

internal class RightJoin<TLeft, TLeftKey, TRight, TRightKey, TDestination>(IObservable<IChangeSet<TLeft, TLeftKey>> left, IObservable<IChangeSet<TRight, TRightKey>> right, Func<TRight, TLeftKey> rightKeySelector, Func<TRightKey, Optional<TLeft>, TRight, TDestination> resultSelector)
internal sealed class RightJoin<TLeft, TLeftKey, TRight, TRightKey, TDestination>(IObservable<IChangeSet<TLeft, TLeftKey>> left, IObservable<IChangeSet<TRight, TRightKey>> right, Func<TRight, TLeftKey> rightKeySelector, Func<TRightKey, Optional<TLeft>, TRight, TDestination> resultSelector)
where TLeft : notnull
where TLeftKey : notnull
where TRight : notnull
Expand Down
2 changes: 1 addition & 1 deletion src/DynamicData/Cache/Internal/RightJoinMany.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

namespace DynamicData.Cache.Internal;

internal class RightJoinMany<TLeft, TLeftKey, TRight, TRightKey, TDestination>(IObservable<IChangeSet<TLeft, TLeftKey>> left, IObservable<IChangeSet<TRight, TRightKey>> right, Func<TRight, TLeftKey> rightKeySelector, Func<TLeftKey, Optional<TLeft>, IGrouping<TRight, TRightKey, TLeftKey>, TDestination> resultSelector)
internal sealed class RightJoinMany<TLeft, TLeftKey, TRight, TRightKey, TDestination>(IObservable<IChangeSet<TLeft, TLeftKey>> left, IObservable<IChangeSet<TRight, TRightKey>> right, Func<TRight, TLeftKey> rightKeySelector, Func<TLeftKey, Optional<TLeft>, IGrouping<TRight, TRightKey, TLeftKey>, TDestination> resultSelector)
where TLeft : notnull
where TLeftKey : notnull
where TRight : notnull
Expand Down
Loading