EventBus 未使用 Abp 在 ASP.NET Core 上触发事件

EventBus is not triggering event on ASP.NET Core using Abp

我正尝试按照描述使用 EventBus here

这是我的事件数据class

    public class UpdateEntryEventData: EventData
    {
        public long? AttributeId { get; set; }
        public int? TenantId { get; set; }
        public Guid Id { get; set; }
    }

界面

    public interface IEntryEventManager: IEventHandler<UpdateEntryEventData>, ITransientDependency
    {

    }

接口实现

    public class EntryEventManager : DasServiceBase, IEntryEventManager
    {
        public void HandleEvent(UpdateEntryEventData eventData)
        {
            // Some logic when an entry is updated ...
        }
    }

这里是我调用方法触发事件的时候

public class EntryManager : DasDomainServiceBase, IEntryManager
{
   public IEventBus EventBus { get; set; }
   
   public EntryManager()
   {
     EventBus = NullEventBus.Instance;
   }

   public async Task<MessageOutput<Guid>> UpdateAsync(UpdateEntryInput input)
   {
      input.Entry = await _customDataManager.GetEntryAsync(input.Entry, AbpSession?.TenantId);

      var result = await _entryStore.UpdateAsync(input).ConfigureAwait(false);
                        
      EventBus.Trigger(new UpdateEntryEventData
      {
         TenantId = AbpSession.GetTenantId(),
         Id = input.Id,
         AttributeId = input.AttributeId
       });

       return new MessageOutput<Guid>(result, null);
    }   
}

根据教程的解释,如果我们的 class 实现:IEventHandler、ITransientDependency,它将被注册。但出于某种原因,我现在无法弄清楚事件没有被触发。

我对我的代码进行了一些更新,现在可以正常工作了。

  • 删除了 DasServiceBase
    public class EntryEventManager : IEntryEventManager
    {
        public void HandleEvent(UpdateEntryEventData eventData)
        {
            // Some logic when an entry is updated ...
        }
    }
  • DasDomainServiceBase 替换为 DasServiceBase
  • 属性 EventBus 必须是 public
public class EntryManager : DasServiceBase, IEntryManager
{
   public IEventBus EventBus { get; set; }
}