/// <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); }
/// <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); }
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); } }
/// <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); }