public bool Publish <TEntity>(IServiceProvider serviceProvider, PersistentEventType eventType)
        {
            var _event  = new EntityEventTypeArgs(eventType);
            var subject = new PersistentSubject(typeof(TEntity), eventType, _event);

            subMgr.Publish(subject);

            AcceptForServiceProvider(serviceProvider, subject);

            return(!_event.Cancel);
        }
        public bool Publish(IServiceProvider serviceProvider, IEntity entity, PersistentEventType eventType)
        {
            Guard.ArgumentNull(entity, nameof(entity));

            var _event  = new EntityEventArgs(entity, eventType);
            var subject = new PersistentSubject(entity.EntityType, eventType, _event);

            subMgr.Publish(subject);

            AcceptForServiceProvider(serviceProvider, subject);

            return(!_event.Cancel);
        }
 public EntitiesArgs(IEnumerable <IEntity> entities, PersistentOperator operType, PersistentEventType eventType)
     : base(eventType)
 {
     Entities = entities;
     OperType = operType;
 }
 public EntityEventArgs(IEntity entity, PersistentEventType eventType)
     : base(eventType)
 {
     Entity = entity;
 }
 public EntityEventTypeArgs(PersistentEventType eventType)
 {
     EventType = eventType;
 }
        public async Task <bool> PublishAsync(IServiceProvider serviceProvider, IEntity entity, PersistentEventType eventType)
        {
            Guard.ArgumentNull(entity, nameof(entity));

            var _event  = new EntityEventArgs(entity, eventType);
            var subject = new PersistentSubject(entity.EntityType, eventType, _event);

            await subMgr.PublishAsync(subject);

            await AcceptForServiceProviderAsync(serviceProvider, subject);

            return(!_event.Cancel);
        }
        public async Task <bool> PublishAsync <TEntity>(IServiceProvider serviceProvider, PersistentEventType eventType)
        {
            var _event  = new EntityEventTypeArgs(eventType);
            var subject = new PersistentSubject(typeof(TEntity), eventType, _event);

            await subMgr.PublishAsync(subject);

            return(!_event.Cancel);
        }
        public async Task <bool> PublishAsync(IServiceProvider serviceProvider, IEnumerable <IEntity> entities, PersistentOperator operType, PersistentEventType eventType)
        {
            IEntity first;

            if ((first = entities.FirstOrDefault()) == null)
            {
                return(true);
            }

            var _event     = new EntitiesArgs(entities, operType, eventType);
            var entityType = first.EntityType;
            var subject    = new PersistentSubject(entityType, eventType, _event);

            await subMgr.PublishAsync(subject);

            await AcceptForServiceProviderAsync(serviceProvider, subject);

            return(!_event.Cancel);
        }
        public async Task <bool> PublishAsync <TEntity>(IServiceProvider serviceProvider, IEnumerable <IEntity> entities, PersistentOperator operType, PersistentEventType eventType)
        {
            if (!entities.Any())
            {
                return(true);
            }

            var _event  = new EntitiesArgs(entities, operType, eventType);
            var subject = new PersistentSubject(typeof(TEntity), eventType, _event);

            await subMgr.PublishAsync(subject);

            await AcceptForServiceProviderAsync(serviceProvider, subject);

            return(!_event.Cancel);
        }
Example #10
0
 /// <summary>
 /// 初始化 <see cref="PersistentSubject"/> 类的新实例。
 /// </summary>
 /// <param name="entityType">实体类型。</param>
 /// <param name="eventType">持久化事件类型。</param>
 /// <param name="argument"></param>
 public PersistentSubject(Type entityType, PersistentEventType eventType, object argument)
 {
     EntityType = entityType;
     EventType  = eventType;
     Argument   = argument;
 }