实例介绍
Dynamic Data 是一个便携式类库,将响应式扩展 (Rx) 的强大功能引入了集合中。Rx 非常强大,但是默认情况下没有提供任何用于管理集合的工具。在大多数应用程序中,需要动态更新集合。通常情况下,会加载集合,然后在初始加载之后,接收到异步更新。原始集合需要反映这些变化。在简单的情况下,代码很简单。然而,典型的应用程序要复杂得多,可能会应用过滤器,转换原始 dto 并应用排序。即使是这些简单的日常操作,代码的复杂性也会迅速增加。Dynamic Data 的开发旨在消除动态维护集合的繁琐代码。它已经发展成为功能非常丰富的库,至少包含了 60 多种基于集合的操作,其中包括过滤、排序、分组、合并不同来源、转换、绑定、分页、数据虚拟化、过期处理、资源释放管理等等。
【实例截图】
var myObservableList = ObservableChangeSet.Create<int>(observableList => { //some code to load data and subscribe var loader= myService.LoadMyDataObservable().Subscribe(observableList.Add); var subscriber = myService.GetMySubscriptionsObservable().Subscribe(observableList.Add); //dispose of resources return new CompositeDisposable(loader,subscriber ); });
【核心代码】
文件清单
└── DynamicData-76fd915924fab0e6756038f50a4fff4464a4ed00
├── images
│ ├── dd-logo.svg
│ ├── dd-shapes.svg
│ └── logo.png
├── LICENSE
├── NonProduction
│ └── DynamicData.Profile
│ ├── AllocationsCount.cs
│ ├── Allocations.cs
│ ├── CacheAllocationChecks.cs
│ ├── CheapAndDirtyAllocationTest.cs
│ ├── DynamicData.Profile.csproj
│ └── Person.cs
├── nuget.config
├── README.md
├── ReleaseNotes.md
├── src
│ ├── coverlet.xml
│ ├── Directory.Build.props
│ ├── Directory.build.targets
│ ├── DynamicData
│ │ ├── Aggregation
│ │ │ ├── AggregateEnumerator.cs
│ │ │ ├── AggregateItem.cs
│ │ │ ├── AggregateType.cs
│ │ │ ├── AggregationEx.cs
│ │ │ ├── Avg.cs
│ │ │ ├── AvgEx.cs
│ │ │ ├── CountEx.cs
│ │ │ ├── IAggregateChangeSet.cs
│ │ │ ├── MaxEx.cs
│ │ │ ├── StdDev.cs
│ │ │ ├── StdDevEx.cs
│ │ │ └── SumEx.cs
│ │ ├── Alias
│ │ │ ├── ObservableCacheAlias.cs
│ │ │ └── ObservableListAlias.cs
│ │ ├── Attributes.cs
│ │ ├── Binding
│ │ │ ├── AbstractNotifyPropertyChanged.cs
│ │ │ ├── BindingListAdaptor.cs
│ │ │ ├── BindingListEventsSuspender.cs
│ │ │ ├── BindingListEx.cs
│ │ │ ├── BindingOptions.cs
│ │ │ ├── ExpressionBuilder.cs
│ │ │ ├── IEvaluateAware.cs
│ │ │ ├── IIndexAware.cs
│ │ │ ├── INotifyCollectionChangedSuspender.cs
│ │ │ ├── IObservableCollectionAdaptor.cs
│ │ │ ├── IObservableCollection.cs
│ │ │ ├── IObservableListEx.cs
│ │ │ ├── ISortedObservableCollectionAdaptor.cs
│ │ │ ├── NotifyPropertyChangedEx.cs
│ │ │ ├── ObservableCollectionAdaptor.cs
│ │ │ ├── ObservableCollectionEx.cs
│ │ │ ├── ObservableCollectionExtended.cs
│ │ │ ├── Observable.cs
│ │ │ ├── ObservablePropertyFactoryCache.cs
│ │ │ ├── ObservablePropertyFactory.cs
│ │ │ ├── ObservablePropertyPart.cs
│ │ │ ├── PropertyValue.cs
│ │ │ ├── SortAndBind.cs
│ │ │ ├── SortAndBindOptions.cs
│ │ │ ├── SortDirection.cs
│ │ │ ├── SortedBindingListAdaptor.cs
│ │ │ ├── SortedObservableCollectionAdaptor.cs
│ │ │ ├── SortExpressionComparer.cs
│ │ │ └── SortExpression.cs
│ │ ├── Cache
│ │ │ ├── CacheChangeSetEx.cs
│ │ │ ├── ChangeAwareCache.cs
│ │ │ ├── Change.cs
│ │ │ ├── ChangeReason.cs
│ │ │ ├── ChangeSet.cs
│ │ │ ├── DistinctChangeSet.cs
│ │ │ ├── GroupChangeSet.cs
│ │ │ ├── ICache.cs
│ │ │ ├── ICacheUpdater.cs
│ │ │ ├── IChangeSetAdaptor.cs
│ │ │ ├── IChangeSet.cs
│ │ │ ├── IConnectableCache.cs
│ │ │ ├── IDistinctChangeSet.cs
│ │ │ ├── IGroupChangeSet.cs
│ │ │ ├── IGroup.cs
│ │ │ ├── IGrouping.cs
│ │ │ ├── IImmutableGroupChangeSet.cs
│ │ │ ├── IIntermediateCache.cs
│ │ │ ├── IKey.cs
│ │ │ ├── IKeyValueCollection.cs
│ │ │ ├── IKeyValue.cs
│ │ │ ├── IndexedItem.cs
│ │ │ ├── IntermediateCache.cs
│ │ │ ├── Internal
│ │ │ │ ├── AbstractFilter.cs
│ │ │ │ ├── AnonymousObservableCache.cs
│ │ │ │ ├── AnonymousQuery.cs
│ │ │ │ ├── AutoRefresh.cs
│ │ │ │ ├── BatchIf.cs
│ │ │ │ ├── Cache.cs
│ │ │ │ ├── CacheEx.cs
│ │ │ │ ├── CacheUpdater.cs
│ │ │ │ ├── Cast.cs
│ │ │ │ ├── ChangeSetCache.cs
│ │ │ │ ├── ChangeSetMergeTracker.cs
│ │ │ │ ├── CombineOperator.cs
│ │ │ │ ├── Combiner.cs
│ │ │ │ ├── DeferUntilLoaded.cs
│ │ │ │ ├── DictionaryExtensions.cs
│ │ │ │ ├── DisposeMany.cs
│ │ │ │ ├── DistinctCalculator.cs
│ │ │ │ ├── DynamicCombiner.cs
│ │ │ │ ├── DynamicFilter.cs
│ │ │ │ ├── DynamicGrouper.cs
│ │ │ │ ├── EditDiffChangeSet.cs
│ │ │ │ ├── EditDiffChangeSetOptional.cs
│ │ │ │ ├── EditDiff.cs
│ │ │ │ ├── ExpirableItem.cs
│ │ │ │ ├── ExpireAfter.ForSource.cs
│ │ │ │ ├── ExpireAfter.ForStream.cs
│ │ │ │ ├── FilteredIndexCalculator.cs
│ │ │ │ ├── FilterEx.cs
│ │ │ │ ├── FilterImmutable.cs
│ │ │ │ ├── FilterOnObservable.cs
│ │ │ │ ├── FilterOnProperty.cs
│ │ │ │ ├── FinallySafe.cs
│ │ │ │ ├── FullJoin.cs
│ │ │ │ ├── FullJoinMany.cs
│ │ │ │ ├── GroupOn.cs
│ │ │ │ ├── GroupOnDynamic.cs
│ │ │ │ ├── GroupOnImmutable.cs
│ │ │ │ ├── GroupOnObservable.cs
│ │ │ │ ├── GroupOnProperty.cs
│ │ │ │ ├── GroupOnPropertyWithImmutableState.cs
│ │ │ │ ├── IFilter.cs
│ │ │ │ ├── IKeySelector.cs
│ │ │ │ ├── ImmutableGroupChangeSet.cs
│ │ │ │ ├── ImmutableGroup.cs
│ │ │ │ ├── IndexAndNode.cs
│ │ │ │ ├── IndexCalculator.cs
│ │ │ │ ├── InnerJoin.cs
│ │ │ │ ├── InnerJoinMany.cs
│ │ │ │ ├── KeyComparer.cs
│ │ │ │ ├── KeySelector.cs
│ │ │ │ ├── KeySelectorException.cs
│ │ │ │ ├── KeyValueCollection.cs
│ │ │ │ ├── KeyValueComparer.cs
│ │ │ │ ├── LeftJoin.cs
│ │ │ │ ├── LeftJoinMany.cs
│ │ │ │ ├── LockFreeObservableCache.cs
│ │ │ │ ├── ManagedGroup.cs
│ │ │ │ ├── MergeChangeSets.cs
│ │ │ │ ├── MergeManyCacheChangeSets.cs
│ │ │ │ ├── MergeManyCacheChangeSetsSourceCompare.cs
│ │ │ │ ├── MergeMany.cs
│ │ │ │ ├── MergeManyItems.cs
│ │ │ │ ├── MergeManyListChangeSets.cs
│ │ │ │ ├── ObservableWithValue.cs
│ │ │ │ ├── OfType.cs
│ │ │ │ ├── OnBeingRemoved.cs
│ │ │ │ ├── Page.cs
│ │ │ │ ├── QueryWhenChanged.cs
│ │ │ │ ├── ReaderWriter.cs
│ │ │ │ ├── RefCount.cs
│ │ │ │ ├── RemoveKeyEnumerator.cs
│ │ │ │ ├── RightJoin.cs
│ │ │ │ ├── RightJoinMany.cs
│ │ │ │ ├── SizeExpirer.cs
│ │ │ │ ├── SizeLimiter.cs
│ │ │ │ ├── Sort.cs
│ │ │ │ ├── SpecifiedGrouper.cs
│ │ │ │ ├── StaticFilter.cs
│ │ │ │ ├── StatusMonitor.cs
│ │ │ │ ├── SubscribeMany.cs
│ │ │ │ ├── Switch.cs
│ │ │ │ ├── ToObservableChangeSet.cs
│ │ │ │ ├── ToObservableOptional.cs
│ │ │ │ ├── TransformAsync.cs
│ │ │ │ ├── Transform.cs
│ │ │ │ ├── TransformImmutable.cs
│ │ │ │ ├── TransformManyAsync.cs
│ │ │ │ ├── TransformMany.cs
│ │ │ │ ├── TransformOnObservable.cs
│ │ │ │ ├── TransformWithForcedTransform.cs
│ │ │ │ ├── TransformWithInlineUpdate.cs
│ │ │ │ ├── TreeBuilder.cs
│ │ │ │ ├── TrueFor.cs
│ │ │ │ ├── UniquenessEnforcer.cs
│ │ │ │ └── Virtualise.cs
│ │ │ ├── IObservableCache.cs
│ │ │ ├── IPagedChangeSet.cs
│ │ │ ├── IPageRequest.cs
│ │ │ ├── IPageResponse.cs
│ │ │ ├── IQuery.cs
│ │ │ ├── ISortedChangeSetAdaptor.cs
│ │ │ ├── ISortedChangeSet.cs
│ │ │ ├── ISourceCache.cs
│ │ │ ├── ISourceUpdater.cs
│ │ │ ├── IVirtualChangeSet.cs
│ │ │ ├── IVirtualRequest.cs
│ │ │ ├── IVirtualResponse.cs
│ │ │ ├── MissingKeyException.cs
│ │ │ ├── Node.cs
│ │ │ ├── ObservableCache.cs
│ │ │ ├── ObservableCacheEx.cs
│ │ │ ├── ObservableCacheEx.SortAndBind.cs
│ │ │ ├── PagedChangeSet.cs
│ │ │ ├── PageRequest.cs
│ │ │ ├── PageResponse.cs
│ │ │ ├── SortedChangeSet.cs
│ │ │ ├── SortOptimisations.cs
│ │ │ ├── SortReason.cs
│ │ │ ├── SourceCache.cs
│ │ │ ├── SourceCacheEx.cs
│ │ │ ├── Tests
│ │ │ │ ├── ChangeSetAggregator.cs
│ │ │ │ ├── DistinctChangeSetAggregator.cs
│ │ │ │ ├── GroupChangeSetAggregator.cs
│ │ │ │ ├── PagedChangeSetAggregator.cs
│ │ │ │ ├── SortedChangeSetAggregator.cs
│ │ │ │ ├── TestEx.cs
│ │ │ │ └── VirtualChangeSetAggregator.cs
│ │ │ ├── TransformAsyncOptions.cs
│ │ │ ├── VirtualChangeSet.cs
│ │ │ ├── VirtualRequest.cs
│ │ │ └── VirtualResponse.cs
│ │ ├── Constants.cs
│ │ ├── Diagnostics
│ │ │ ├── ChangeStatistics.cs
│ │ │ ├── ChangeSummary.cs
│ │ │ └── DiagnosticOperators.cs
│ │ ├── DynamicData.csproj
│ │ ├── DynamicData.csproj.DotSettings
│ │ ├── DynamicDataOptions.cs
│ │ ├── EnumerableEx.cs
│ │ ├── Experimental
│ │ │ ├── ExperimentalEx.cs
│ │ │ ├── ISubjectWithRefCount.cs
│ │ │ ├── IWatcher.cs
│ │ │ ├── SubjectWithRefCount.cs
│ │ │ └── Watcher.cs
│ │ ├── GlobalConfig.cs
│ │ ├── IChangeSet.cs
│ │ ├── Internal
│ │ │ ├── ExceptionMixins.cs
│ │ │ └── ObservableEx.cs
│ │ ├── Kernel
│ │ │ ├── ConnectionStatus.cs
│ │ │ ├── EnumerableEx.cs
│ │ │ ├── EnumerableIList.cs
│ │ │ ├── EnumeratorIList.cs
│ │ │ ├── Error.cs
│ │ │ ├── IEnumerableIList.cs
│ │ │ ├── InternalEx.cs
│ │ │ ├── ISupportsCapacity.cs
│ │ │ ├── ItemWithIndex.cs
│ │ │ ├── ItemWithValue.cs
│ │ │ ├── Optional.cs
│ │ │ ├── OptionElse.cs
│ │ │ ├── OptionExtensions.cs
│ │ │ ├── OptionObservableExtensions.cs
│ │ │ ├── ParallelEx.cs
│ │ │ ├── ReadOnlyCollectionLight.cs
│ │ │ └── ReferenceEqualityComparer.cs
│ │ ├── List
│ │ │ ├── ChangeAwareList.cs
│ │ │ ├── ChangeAwareListWithRefCounts.cs
│ │ │ ├── Change.cs
│ │ │ ├── ChangeSet.cs
│ │ │ ├── ChangeSetEx.cs
│ │ │ ├── ChangeType.cs
│ │ │ ├── IChangeSetAdaptor.cs
│ │ │ ├── IChangeSet.cs
│ │ │ ├── IExtendedList.cs
│ │ │ ├── IGroup.cs
│ │ │ ├── IGrouping.cs
│ │ │ ├── Internal
│ │ │ │ ├── AnonymousObservableList.cs
│ │ │ │ ├── AutoRefresh.cs
│ │ │ │ ├── BufferIf.cs
│ │ │ │ ├── ChangeSetMergeTracker.cs
│ │ │ │ ├── ClonedListChangeSet.cs
│ │ │ │ ├── Combiner.cs
│ │ │ │ ├── DeferUntilLoaded.cs
│ │ │ │ ├── DisposeMany.cs
│ │ │ │ ├── Distinct.cs
│ │ │ │ ├── DynamicCombiner.cs
│ │ │ │ ├── EditDiff.cs
│ │ │ │ ├── ExpirableItem.cs
│ │ │ │ ├── ExpireAfter.cs
│ │ │ │ ├── Filter.cs
│ │ │ │ ├── FilterOnObservable.cs
│ │ │ │ ├── FilterOnProperty.cs
│ │ │ │ ├── FilterStatic.cs
│ │ │ │ ├── Group.cs
│ │ │ │ ├── GroupOn.cs
│ │ │ │ ├── GroupOnImmutable.cs
│ │ │ │ ├── GroupOnProperty.cs
│ │ │ │ ├── GroupOnPropertyWithImmutableState.cs
│ │ │ │ ├── ImmutableGroup.cs
│ │ │ │ ├── LimitSizeTo.cs
│ │ │ │ ├── MergeChangeSets.cs
│ │ │ │ ├── MergeManyCacheChangeSets.cs
│ │ │ │ ├── MergeMany.cs
│ │ │ │ ├── MergeManyListChangeSets.cs
│ │ │ │ ├── OnBeingAdded.cs
│ │ │ │ ├── OnBeingRemoved.cs
│ │ │ │ ├── Pager.cs
│ │ │ │ ├── QueryWhenChanged.cs
│ │ │ │ ├── ReaderWriter.cs
│ │ │ │ ├── RefCount.cs
│ │ │ │ ├── ReferenceCountTracker.cs
│ │ │ │ ├── Sort.cs
│ │ │ │ ├── SubscribeMany.cs
│ │ │ │ ├── Switch.cs
│ │ │ │ ├── ToObservableChangeSet.cs
│ │ │ │ ├── TransformAsync.cs
│ │ │ │ ├── Transformer.cs
│ │ │ │ ├── TransformMany.cs
│ │ │ │ ├── UnifiedChange.cs
│ │ │ │ └── Virtualiser.cs
│ │ │ ├── IObservableList.cs
│ │ │ ├── IPageChangeSet.cs
│ │ │ ├── ISourceList.cs
│ │ │ ├── ItemChange.cs
│ │ │ ├── IVirtualChangeSet.cs
│ │ │ ├── Linq
│ │ │ │ ├── AddKeyEnumerator.cs
│ │ │ │ ├── ItemChangeEnumerator.cs
│ │ │ │ ├── Reverser.cs
│ │ │ │ ├── UnifiedChangeEnumerator.cs
│ │ │ │ └── WithoutIndexEnumerator.cs
│ │ │ ├── ListChangeReason.cs
│ │ │ ├── ListEx.cs
│ │ │ ├── ListFilterPolicy.cs
│ │ │ ├── ObservableListEx.cs
│ │ │ ├── PageChangeSet.cs
│ │ │ ├── RangeChange.cs
│ │ │ ├── SortException.cs
│ │ │ ├── SortOptions.cs
│ │ │ ├── SourceList.cs
│ │ │ ├── SourceListEditConvenienceEx.cs
│ │ │ ├── SourceListEx.cs
│ │ │ ├── Tests
│ │ │ │ ├── ChangeSetAggregator.cs
│ │ │ │ └── ListTextEx.cs
│ │ │ ├── UnspecifiedIndexException.cs
│ │ │ └── VirtualChangeSet.cs
│ │ ├── ObservableChangeSet.cs
│ │ ├── ObsoleteEx.cs
│ │ ├── Platforms
│ │ │ └── net45
│ │ │ ├── ParallelEx.cs
│ │ │ ├── ParallelisationOptions.cs
│ │ │ ├── ParallelOperators.cs
│ │ │ ├── ParallelType.cs
│ │ │ ├── PFilter.cs
│ │ │ ├── PSubscribeMany.cs
│ │ │ └── PTransform.cs
│ │ └── Polyfills
│ │ ├── CompilerFeatureRequiredAttribute.cs
│ │ ├── IsExternalInit.cs
│ │ ├── ListEnsureCapacity.cs
│ │ └── RequiredMemberAttribute.cs
│ ├── DynamicData.Benchmarks
│ │ ├── Cache
│ │ │ ├── DisposeMany_Cache.cs
│ │ │ ├── EditDiff.cs
│ │ │ ├── ExpireAfter_Cache_ForSource.cs
│ │ │ ├── ExpireAfter_Cache_ForStream.cs
│ │ │ ├── FilterImmutable.cs
│ │ │ ├── SortAndBindChange.cs
│ │ │ ├── SortAndBindInitial.cs
│ │ │ ├── SourceCache.cs
│ │ │ ├── StatelessFiltering.cs
│ │ │ ├── StatelessTransforming.cs
│ │ │ ├── ToObservableChangeSet_Cache.cs
│ │ │ ├── TransformImmutable.cs
│ │ │ └── TransformMany.cs
│ │ ├── DynamicData.Benchmarks.csproj
│ │ ├── List
│ │ │ ├── DisposeMany_List.cs
│ │ │ ├── ExpireAfter_List.cs
│ │ │ ├── GroupAdd.cs
│ │ │ ├── GroupRemove.cs
│ │ │ ├── SourceList.cs
│ │ │ └── ToObservableChangeSet_List.cs
│ │ ├── Polyfills
│ │ │ ├── CompilerFeatureRequiredAttribute.cs
│ │ │ ├── IsExternalInit.cs
│ │ │ └── RequiredMemberAttribute.cs
│ │ └── Program.cs
│ ├── DynamicData.sln
│ ├── DynamicData.Tests
│ │ ├── AggregationTests
│ │ │ ├── AggregationFixture.cs
│ │ │ ├── AverageFixture.cs
│ │ │ ├── MaxFixture.cs
│ │ │ ├── MinFixture.cs
│ │ │ └── SumFixture.cs
│ │ ├── API
│ │ │ ├── ApiApprovalTests.cs
│ │ │ ├── ApiApprovalTests.DynamicDataTests.DotNet8_0.verified.txt
│ │ │ └── ApiExtensions.cs
│ │ ├── AutoRefreshFilter.cs
│ │ ├── Binding
│ │ │ ├── AvaloniaDictionaryFixture.cs
│ │ │ ├── BindingListBindCacheFixture.cs
│ │ │ ├── BindingListBindCacheSortedFixture.cs
│ │ │ ├── BindingLIstBindListFixture.cs
│ │ │ ├── BindingListToChangeSetFixture.cs
│ │ │ ├── DeeplyNestedNotifyPropertyChangedFixture.cs
│ │ │ ├── IObservableListBindCacheFixture.cs
│ │ │ ├── IObservableListBindCacheSortedFixture.cs
│ │ │ ├── IObservableListBindListFixture.cs
│ │ │ ├── NotifyPropertyChangedExFixture.cs
│ │ │ ├── ObservableCollectionBindCacheFixture.cs
│ │ │ ├── ObservableCollectionBindCacheSortedFixture.cs
│ │ │ ├── ObservableCollectionBindListFixture.cs
│ │ │ ├── ObservableCollectionExtendedToChangeSetFixture.cs
│ │ │ ├── ObservableCollectionToChangeSetFixture.cs
│ │ │ ├── ReadonlyCollectionBindCacheFixture.cs
│ │ │ └── ReadOnlyObservableCollectionToChangeSetFixture.cs
│ │ ├── Cache
│ │ │ ├── AndFixture.cs
│ │ │ ├── AutoRefreshFixture.cs
│ │ │ ├── BatchFixture.cs
│ │ │ ├── BatchIfFixture.cs
│ │ │ ├── BatchIfWithTimeOutFixture.cs
│ │ │ ├── BufferInitialFixture.cs
│ │ │ ├── DeferUntilLoadedFixture.cs
│ │ │ ├── DisposeManyFixture.cs
│ │ │ ├── DistinctFixture.cs
│ │ │ ├── DynamicAndFixture.cs
│ │ │ ├── DynamicExceptFixture.cs
│ │ │ ├── DynamicOrFixture.cs
│ │ │ ├── DynamicXorFixture.cs
│ │ │ ├── EditDiffChangeSetFixture.cs
│ │ │ ├── EditDiffChangeSetOptionalFixture.cs
│ │ │ ├── EditDiffFixture.cs
│ │ │ ├── EnsureUniqueKeysFixture.cs
│ │ │ ├── EnumerableObservableToObservableChangeSetFixture.cs
│ │ │ ├── ExceptFixture.cs
│ │ │ ├── ExpireAfterFixture.cs
│ │ │ ├── ExpireAfterFixture.ForSource.cs
│ │ │ ├── ExpireAfterFixture.ForStream.cs
│ │ │ ├── FilterControllerFixture.cs
│ │ │ ├── FilterFixture.cs
│ │ │ ├── FilterImmutableFixture.cs
│ │ │ ├── FilterOnConnectFixture.cs
│ │ │ ├── FilterOnObservableFixture.cs
│ │ │ ├── FilterOnPropertyFixture.cs
│ │ │ ├── FilterParallelFixture.cs
│ │ │ ├── ForEachChangeFixture.cs
│ │ │ ├── FromAsyncFixture.cs
│ │ │ ├── FullJoinFixture.cs
│ │ │ ├── FullJoinManyFixture.cs
│ │ │ ├── GroupControllerFixture.cs
│ │ │ ├── GroupControllerForFilteredItemsFixture.cs
│ │ │ ├── GroupFixture.cs
│ │ │ ├── GroupFromDistinctFixture.cs
│ │ │ ├── GroupImmutableFixture.cs
│ │ │ ├── GroupOnDynamicFixture.cs
│ │ │ ├── GroupOnObservableFixture.cs
│ │ │ ├── GroupOnPropertyFixture.cs
│ │ │ ├── GroupOnPropertyWithImmutableStateFixture.cs
│ │ │ ├── IgnoreUpdateFixture.cs
│ │ │ ├── IncludeUpdateFixture.cs
│ │ │ ├── InnerJoinFixture.cs
│ │ │ ├── InnerJoinFixtureRaceCondition.cs
│ │ │ ├── InnerJoinManyFixture.cs
│ │ │ ├── KeyValueCollectionEx.cs
│ │ │ ├── LeftJoinFixture.cs
│ │ │ ├── LeftJoinManyFixture.cs
│ │ │ ├── MergeChangeSetsFixture.cs
│ │ │ ├── MergeManyChangeSetsCacheFixture.cs
│ │ │ ├── MergeManyChangeSetsCacheSourceCompareFixture.cs
│ │ │ ├── MergeManyChangeSetsListFixture.cs
│ │ │ ├── MergeManyFixture.cs
│ │ │ ├── MergeManyItemsFixture.cs
│ │ │ ├── MergeManyWithKeyOverloadFixture.cs
│ │ │ ├── MonitorStatusFixture.cs
│ │ │ ├── ObservableCachePreviewFixture.cs
│ │ │ ├── ObservableChangeSetFixture.cs
│ │ │ ├── ObservableToObservableChangeSetFixture.cs
│ │ │ ├── OfTypeFixture.cs
│ │ │ ├── OnItemFixture.cs
│ │ │ ├── OrFixture.cs
│ │ │ ├── PageFixture.cs
│ │ │ ├── QueryWhenChangedFixture.cs
│ │ │ ├── RefCountFixture.cs
│ │ │ ├── RightJoinFixture.cs
│ │ │ ├── RightJoinManyFixture.cs
│ │ │ ├── SizeLimitFixture.cs
│ │ │ ├── SortAndBindFixture.cs
│ │ │ ├── SortAndBindObservableFixture.cs
│ │ │ ├── SortFixture.cs
│ │ │ ├── SortObservableFixtureFixture.cs
│ │ │ ├── SourceCacheFixture.cs
│ │ │ ├── SubscribeManyFixture.cs
│ │ │ ├── SuspendNotificationsFixture.cs
│ │ │ ├── SwitchFixture.cs
│ │ │ ├── ToObservableChangeSetFixture.cs
│ │ │ ├── ToObservableOptionalFixture.cs
│ │ │ ├── ToSortedCollectionFixture.cs
│ │ │ ├── TransformAsyncFixture.cs
│ │ │ ├── TransformFixture.cs
│ │ │ ├── TransformFixtureParallel.cs
│ │ │ ├── TransformImmutableFixture.cs
│ │ │ ├── TransformManyAsyncFixture.cs
│ │ │ ├── TransformManyFixture.cs
│ │ │ ├── TransformManyObservableCacheFixture.cs
│ │ │ ├── TransformManyRefreshFixture.cs
│ │ │ ├── TransformManySimpleFixture.cs
│ │ │ ├── TransformOnObservableFixture.cs
│ │ │ ├── TransformSafeAsyncFixture.cs
│ │ │ ├── TransformSafeFixture.cs
│ │ │ ├── TransformSafeParallelFixture.cs
│ │ │ ├── TransformTreeFixture.cs
│ │ │ ├── TransformTreeWithRefreshFixture.cs
│ │ │ ├── TransformWithInlineUpdateFixture.cs
│ │ │ ├── TrueForAllFixture.cs
│ │ │ ├── TrueForAnyFixture.cs
│ │ │ ├── WatcherFixture.cs
│ │ │ ├── WatchFixture.cs
│ │ │ └── XorFixture.cs
│ │ ├── Domain
│ │ │ ├── Animal.cs
│ │ │ ├── AnimalOwner.cs
│ │ │ ├── Fakers.cs
│ │ │ ├── Market.cs
│ │ │ ├── MarketPrice.cs
│ │ │ ├── ParentAndChildren.cs
│ │ │ ├── ParentChild.cs
│ │ │ ├── Person.cs
│ │ │ ├── PersonEmployment.cs
│ │ │ ├── PersonObs.cs
│ │ │ ├── PersonWithChildren.cs
│ │ │ ├── PersonWithEmployment.cs
│ │ │ ├── PersonWithFriends.cs
│ │ │ ├── PersonWithGender.cs
│ │ │ ├── PersonWithRelations.cs
│ │ │ ├── Pet.cs
│ │ │ ├── RandomPersonGenerator.cs
│ │ │ └── SelfObservingPerson.cs
│ │ ├── DynamicData.Tests.csproj
│ │ ├── EnumerableExFixtures.cs
│ │ ├── EnumerableIListFixture.cs
│ │ ├── Issues
│ │ │ ├── OnItemRemovedIssue.cs
│ │ │ └── Readme.txt
│ │ ├── Kernal
│ │ │ ├── CacheUpdaterFixture.cs
│ │ │ ├── DistinctUpdateFixture.cs
│ │ │ ├── EnumerableEx.cs
│ │ │ ├── KeyValueFixture.cs
│ │ │ ├── OptionFixture.cs
│ │ │ ├── OptionObservableFixture.cs
│ │ │ ├── SourceUpdaterFixture.cs
│ │ │ └── UpdateFixture.cs
│ │ ├── List
│ │ │ ├── AndFixture.cs
│ │ │ ├── AutoRefreshFixture.cs
│ │ │ ├── BatchFixture.cs
│ │ │ ├── BatchIfFixture.cs
│ │ │ ├── BatchIfWithTimeOutFixture.cs
│ │ │ ├── BufferFixture.cs
│ │ │ ├── BufferInitialFixture.cs
│ │ │ ├── CastFixture.cs
│ │ │ ├── ChangeAwareListFixture.cs
│ │ │ ├── ChangeSetFixture.cs
│ │ │ ├── CloneChangesFixture.cs
│ │ │ ├── CloneFixture.cs
│ │ │ ├── CreationFixtures.cs
│ │ │ ├── DeferUntilLoadedFixture.cs
│ │ │ ├── DisposeManyFixture.cs
│ │ │ ├── DistinctValuesFixture.cs
│ │ │ ├── DynamicAndFixture.cs
│ │ │ ├── DynamicExceptFixture.cs
│ │ │ ├── DynamicOrFixture.cs
│ │ │ ├── DynamicXOrFixture.cs
│ │ │ ├── EditDiffFixture.cs
│ │ │ ├── ExceptFixture.cs
│ │ │ ├── ExpireAfterFixture.cs
│ │ │ ├── FilterControllerFixtureWithClearAndReplace.cs
│ │ │ ├── FilterControllerFixtureWithDiffSet.cs
│ │ │ ├── FilterFixture.cs
│ │ │ ├── FilterOnObservableFixture.cs
│ │ │ ├── FilterOnPropertyFixture.cs
│ │ │ ├── FilterWithObservable.cs
│ │ │ ├── ForEachChangeFixture.cs
│ │ │ ├── FromAsyncFixture.cs
│ │ │ ├── GroupImmutableFixture.cs
│ │ │ ├── GroupOnFixture.cs
│ │ │ ├── GroupOnPropertyFixture.cs
│ │ │ ├── GroupOnPropertyWithImmutableStateFixture.cs
│ │ │ ├── MergeChangeSetsFixture.cs
│ │ │ ├── MergeManyChangeSetsCacheFixture.cs
│ │ │ ├── MergeManyChangeSetsFixture.cs
│ │ │ ├── MergeManyChangeSetsListFixture.cs
│ │ │ ├── MergeManyFixture.cs
│ │ │ ├── OnItemFixture.cs
│ │ │ ├── OrFixture.cs
│ │ │ ├── PageFixture.cs
│ │ │ ├── QueryWhenChangedFixture.cs
│ │ │ ├── RecursiveTransformManyFixture.cs
│ │ │ ├── RefCountFixture.cs
│ │ │ ├── RemoveManyFixture.cs
│ │ │ ├── ReverseFixture.cs
│ │ │ ├── SelectFixture.cs
│ │ │ ├── SizeLimitFixture.cs
│ │ │ ├── SortFixture.cs
│ │ │ ├── SortMutableFixture.cs
│ │ │ ├── SortPrimitiveFixture.cs
│ │ │ ├── SourceListFixture.cs
│ │ │ ├── SourceListPreviewFixture.cs
│ │ │ ├── SubscribeManyFixture.cs
│ │ │ ├── SwitchFixture.cs
│ │ │ ├── ToCollectionFixture.cs
│ │ │ ├── ToObservableChangeSetFixture.cs
│ │ │ ├── TransformAsyncFixture.cs
│ │ │ ├── TransformFixture.cs
│ │ │ ├── TransformManyFixture.cs
│ │ │ ├── TransformManyObservableCollectionFixture.cs
│ │ │ ├── TransformManyProjectionFixture.cs
│ │ │ ├── TransformManyRefreshFixture.cs
│ │ │ ├── VirtualisationFixture.cs
│ │ │ └── XOrFixture.cs
│ │ ├── ObservableCollectionExFixture.cs
│ │ └── Utilities
│ │ ├── ComparerExtensions.cs
│ │ ├── FakerExtensions.cs
│ │ ├── FakeScheduler.cs
│ │ ├── FunctionalExtensions.cs
│ │ ├── ObservableEx.cs
│ │ ├── ObservableExtensions.cs
│ │ ├── ObservableSpy.cs
│ │ ├── RandomizerExtensions.cs
│ │ ├── RawAnonymousObservable.cs
│ │ ├── RawAnonymousObserver.cs
│ │ ├── SelectManyExtensions.cs
│ │ ├── StressAddRemoveExtensions.cs
│ │ ├── TestableObserver.cs
│ │ ├── TestableObserverExtensions.cs
│ │ ├── TestSourceCache.cs
│ │ ├── TestSourceList.cs
│ │ └── UnsynchronizedNotificationException.cs
│ ├── global.json
│ └── stylecop.json
└── version.json
37 directories, 613 files
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论