コード例 #1
0
        /// <summary>
        /// 产生领域事件。
        /// </summary>
        /// <typeparam name="TEvent">需要产生的领域事件的类型。</typeparam>
        /// <param name="evnt">需要产生的领域事件。</param>
        protected virtual async void RaiseEventAsync <TEvent>(TEvent evnt)
            where TEvent : class, IDomainEvent
        {
            await DomainEventAggregator.PublishAsync <TEvent>(evnt);

            events.Add(evnt);
        }
コード例 #2
0
        /// <summary>
        /// 初始化一个<c>OrderServiceImpl</c>类型的实例。
        /// </summary>
        /// <param name="context">用来初始化<c>OrderServiceImpl</c>类型的仓储上下文实例。</param>
        /// <param name="shoppingCartRepository">“购物篮”仓储实例。</param>
        /// <param name="shoppingCartItemRepository">“购物篮项目”仓储实例。</param>
        /// <param name="productRepository">“笔记本电脑”仓储实例。</param>
        /// <param name="customerRepository">“客户”仓储实例。</param>
        /// <param name="salesOrderRepository">“销售订单”仓储实例。</param>
        public OrderServiceImpl(IRepositoryContext context,
                                IShoppingCartRepository shoppingCartRepository,
                                IShoppingCartItemRepository shoppingCartItemRepository,
                                IProductRepository productRepository,
                                IUserRepository customerRepository,
                                ISalesOrderRepository salesOrderRepository,
                                IDomainService domainService,
                                IDomainEventHandler <OrderDispatchedEvent>[] orderDispatchedDomainEventHandlers)
            : base(context)
        {
            this.shoppingCartRepository     = shoppingCartRepository;
            this.shoppingCartItemRepository = shoppingCartItemRepository;
            this.productRepository          = productRepository;
            this.userRepository             = customerRepository;
            this.salesOrderRepository       = salesOrderRepository;
            this.domainService = domainService;
            this.orderDispatchedDomainEventHandlers.AddRange(orderDispatchedDomainEventHandlers);

            foreach (var handler in this.orderDispatchedDomainEventHandlers)
            {
                DomainEventAggregator.Subscribe <OrderDispatchedEvent>(handler);
            }
            DomainEventAggregator.Subscribe <OrderConfirmedEvent>(orderConfirmedEventHandlerAction);
            DomainEventAggregator.Subscribe <OrderConfirmedEvent>(orderConfirmedEventHandlerAction2);
        }
コード例 #3
0
 protected override void Dispose(bool disposing)
 {
     if (disposing)
     {
         foreach (var handler in this.orderDispatchedDomainEventHandlers)
         {
             DomainEventAggregator.Unsubscribe <OrderDispatchedEvent>(handler);
         }
         DomainEventAggregator.Unsubscribe <OrderConfirmedEvent>(orderConfirmedEventHandlerAction);
         DomainEventAggregator.Unsubscribe <OrderConfirmedEvent>(orderConfirmedEventHandlerAction2);
     }
 }
コード例 #4
0
 /// <summary>
 /// 产生领域事件。
 /// </summary>
 /// <typeparam name="TEvent">需要产生的领域事件的类型。</typeparam>
 /// <param name="evnt">需要产生的领域事件。</param>
 protected virtual void RaiseEvent <TEvent>(TEvent evnt)
     where TEvent : class, IDomainEvent
 {
     DomainEventAggregator.Publish <TEvent>(evnt);
     events.Add(evnt);
 }