private CollectionChangeConversionAppliedEventArgs(IConversionCollectionChangeBundles <ConvertedItemType, CommonValueType, OriginContentType> bundles,
                                                    AsyncEventSequence eventSequence)
 {
     bundles = bundles ?? throw new ArgumentNullException(nameof(bundles));
     ConvertedCollectionChangeBundle = bundles.ConvertedBundle;
     OriginCollectionChangeBundle    = bundles.OriginBundle;
     EventSequence = eventSequence;
 }
示例#2
0
        public virtual async Task ApplyCollectionChangeAsync(ICollectionChange <ContentType, ContentType> contentContentChange)
        {
            applyCollectionChange(contentContentChange, out var appliedBundle);
            var eventSequence = new AsyncEventSequence();
            var args          = new CollectionChangeAppliedEventArgs <ItemType, ContentType>(appliedBundle, eventSequence);

            OnCollectionChangeApplied(args);
            await eventSequence.FinishDependenciesAsync();
        }
示例#3
0
        public virtual async Task ApplyCollectionChangeAsync(ICollectionChange <ItemType, ContentType> itemContentChange)
        {
            BeginWork();

            try {
                applyCollectionChange(itemContentChange, out var appliedBundle);
                var eventSequence = new AsyncEventSequence();
                var args          = new CollectionChangeAppliedEventArgs <ItemType, ContentType>(appliedBundle, eventSequence);
                OnCollectionChangeApplied(args);
                await eventSequence.FinishDependenciesAsync();
            } finally {
                EndWork();
            }
        }
示例#4
0
            public async Task RelayCollectionChangeAsync(ICollectionChangeBundle <ContentType, OriginContentType> originBundle)
            {
                var convertedApplyingBundle = createApplyingCollectionChangeConversionBundle(originBundle);

                synchronizer.ApplyCollectionChangeBundle(convertedApplyingBundle);
                var convertedAppliedBundle = synchronizer.GetAppliedCollectionChangeBundle(convertedApplyingBundle);
                var convertedChangeAppliedEventSequence = new AsyncEventSequence();
                var convertedChangeAppliedArgs          = new CollectionChangeAppliedEventArgs <ItemType, ContentType>(convertedAppliedBundle, convertedChangeAppliedEventSequence);

                synchronizer.OnCollectionChangeApplied(convertedChangeAppliedArgs);
                await convertedChangeAppliedEventSequence.FinishDependenciesAsync();

                var conversionBundles = new ConversionCollectionChangeBundles(convertedAppliedBundle, originBundle);
                var changeConversionAppliedEventSequence = new AsyncEventSequence();
                var changeConversionAppliedArgs          = CollectionChangeConversionAppliedEventArgs <ItemType, ContentType, OriginContentType> .CreateAsynchronous(conversionBundles, changeConversionAppliedEventSequence);

                OnCollectionChangeConversionApplied(changeConversionAppliedArgs);
                await convertedChangeAppliedEventSequence.FinishDependenciesAsync();
            }
示例#5
0
 public CollectionChangeAppliedEventArgs(ICollectionChangeBundle <ItemType, ContentType> bundle, AsyncEventSequence eventSequence)
 {
     this.bundle        = bundle ?? throw new ArgumentNullException(nameof(bundle));
     AsyncEventSequence = eventSequence ?? throw new ArgumentNullException(nameof(eventSequence));
 }
 public static CollectionChangeConversionAppliedEventArgs <ConvertedItemType, CommonValueType, OriginContentType> CreateAsynchronous(IConversionCollectionChangeBundles <ConvertedItemType, CommonValueType, OriginContentType> bundles, AsyncEventSequence eventSequence)
 {
     eventSequence = eventSequence ?? throw new ArgumentNullException(nameof(eventSequence));
     return(new CollectionChangeConversionAppliedEventArgs <ConvertedItemType, CommonValueType, OriginContentType>(bundles, eventSequence));
 }