コード例 #1
0
        /// <summary>
        /// subscribe domain event in global area
        /// </summary>
        /// <typeparam name="Event"></typeparam>
        /// <param name="eventHandleOperationAsync">event handle operation</param>
        /// <param name="executeTime">execute time</param>
        public void Subscribe <Event>(Func <Event, Task <DomainEventExecuteResult> > eventHandleOperationAsync, EventExecuteTime executeTime = EventExecuteTime.Immediately) where Event : class, IDomainEvent
        {
            IDomainEventHandler domainEventHandler = null;

            switch (executeTime)
            {
            case EventExecuteTime.Immediately:
                domainEventHandler = new DefaultImmediatelyDomainEventHandler <Event>()
                {
                    ExecuteEventOperation = eventHandleOperationAsync
                };
                break;

            case EventExecuteTime.WorkCompleted:
                domainEventHandler = new DefaultWorkCompletedDomainEventHandler <Event>()
                {
                    ExecuteEventOperation = eventHandleOperationAsync
                };
                break;
            }
            Subscribe <Event>(domainEventHandler);
        }
コード例 #2
0
        /// <summary>
        /// subscribe domain event in global area
        /// </summary>
        /// <typeparam name="Event">event</typeparam>
        /// <param name="eventHandleOperation">event handle operation</param>
        /// <param name="executeTime">execute time</param>
        public void Subscribe <Event>(Func <Event, DomainEventExecuteResult> eventHandleOperation, EventExecuteTime executeTime = EventExecuteTime.Immediately) where Event : class, IDomainEvent
        {
            if (eventHandleOperation == null)
            {
                return;
            }
            Func <Event, Task <DomainEventExecuteResult> > asyncOperation = x => Task.FromResult(eventHandleOperation(x));

            Subscribe(asyncOperation, executeTime);
        }