从官方文档中学习得知:EventBus是一个像触发器的东西,在某个实体发生变化时触发某些操作。
实现的方式是写一个实现它的接口的类,在实现的HandleEvent方法里进行操作。
触发的方式有两种:手动触发和自动触发
手动触发:继承IEventHandler<>。这里泛型声明里可以写一个实现EventData的类。然后在要触发的地方注入IEventBus 。用它的Trigger方法手动触发。
EventBus.Trigger(new VelhicleEventData { Vehicle = ObjectMapper.Map<Vehicle>(input), LogType = LogType.恢复正常 })
自动触发:继承EntityCreatingEventData<TEntity>,EntityCreatedEventData<TEntity>,EntityUpdatingEventData<TEntity>,EntityUpdatedEventData<TEntity>,EntityDeletingEventData<TEntity>EntityDeletedEventData<TEntity>这些类。这里的TEntity就是要监听的实体了。
ing下触发的操作和实体的变化是同一事务。ed下是不同一事务。
关于事件注册:在ABP下框架会扫描代码里所有继承这些EventBus的类,自动注册管理他们。除非你想自己管理它的生命周期,不然不推荐手动注册手动销毁。