diff --git a/GFramework.Core.Tests/architecture/TestArchitectureBase.cs b/GFramework.Core.Tests/architecture/TestArchitectureBase.cs index 6c43b4a..1844cb0 100644 --- a/GFramework.Core.Tests/architecture/TestArchitectureBase.cs +++ b/GFramework.Core.Tests/architecture/TestArchitectureBase.cs @@ -42,7 +42,6 @@ public abstract class TestArchitectureBase : Architecture { InitCalled = true; _postRegistrationHook?.Invoke(this); - Context.RegisterEvent(_ => { ReadyEventFired = true; }); } /// diff --git a/GFramework.Core.Tests/events/ArchitectureEventsTests.cs b/GFramework.Core.Tests/events/ArchitectureEventsTests.cs deleted file mode 100644 index 2f96153..0000000 --- a/GFramework.Core.Tests/events/ArchitectureEventsTests.cs +++ /dev/null @@ -1,173 +0,0 @@ -using GFramework.Core.events; -using NUnit.Framework; - -namespace GFramework.Core.Tests.events; - -/// -/// ArchitectureEvents类的单元测试 -/// 测试内容包括: -/// - ArchitectureLifecycleReadyEvent事件触发 -/// - ArchitectureDestroyingEvent事件触发 -/// - ArchitectureDestroyedEvent事件触发 -/// - ArchitectureFailedInitializationEvent事件触发 -/// - 事件的参数传递 -/// - 事件的订阅和取消订阅 -/// - 事件顺序验证(LifecycleReady -> Destroying -> Destroyed) -/// -[TestFixture] -public class ArchitectureEventsTests -{ - [SetUp] - public void SetUp() - { - _eventBus = new EventBus(); - } - - private EventBus? _eventBus; - - /// - /// 测试ArchitectureLifecycleReadyEvent事件可以创建并发送 - /// - [Test] - public void ArchitectureLifecycleReadyEvent_Should_Be_Created_And_Sent() - { - bool eventReceived = false; - - _eventBus!.Register(_ => eventReceived = true); - _eventBus.Send(); - - Assert.That(eventReceived, Is.True); - } - - /// - /// 测试ArchitectureDestroyingEvent事件可以创建并发送 - /// - [Test] - public void ArchitectureDestroyingEvent_Should_Be_Created_And_Sent() - { - bool eventReceived = false; - - _eventBus!.Register(_ => eventReceived = true); - _eventBus.Send(); - - Assert.That(eventReceived, Is.True); - } - - /// - /// 测试ArchitectureDestroyedEvent事件可以创建并发送 - /// - [Test] - public void ArchitectureDestroyedEvent_Should_Be_Created_And_Sent() - { - bool eventReceived = false; - - _eventBus!.Register(_ => eventReceived = true); - _eventBus.Send(); - - Assert.That(eventReceived, Is.True); - } - - /// - /// 测试ArchitectureFailedInitializationEvent事件可以创建并发送 - /// - [Test] - public void ArchitectureFailedInitializationEvent_Should_Be_Created_And_Sent() - { - bool eventReceived = false; - - _eventBus!.Register(_ => eventReceived = true); - _eventBus.Send(); - - Assert.That(eventReceived, Is.True); - } - - /// - /// 测试事件按正确顺序发送 - /// - [Test] - public void Events_Should_Be_Sent_In_Correct_Order() - { - var events = new List(); - - _eventBus!.Register(_ => events.Add("Ready")); - _eventBus!.Register(_ => events.Add("Destroying")); - _eventBus!.Register(_ => events.Add("Destroyed")); - - _eventBus.Send(); - _eventBus.Send(); - _eventBus.Send(); - - Assert.That(events.Count, Is.EqualTo(3)); - Assert.That(events[0], Is.EqualTo("Ready")); - Assert.That(events[1], Is.EqualTo("Destroying")); - Assert.That(events[2], Is.EqualTo("Destroyed")); - } - - /// - /// 测试多个订阅者都能接收到事件 - /// - [Test] - public void Multiple_Subscribers_Should_All_Receive_Events() - { - var count1 = 0; - var count2 = 0; - - _eventBus!.Register(_ => count1++); - _eventBus!.Register(_ => count2++); - - _eventBus.Send(); - - Assert.That(count1, Is.EqualTo(1)); - Assert.That(count2, Is.EqualTo(1)); - } - - /// - /// 测试事件取消订阅后不再接收未来事件 - /// - [Test] - public void Event_UnRegister_Should_Prevent_Future_Events() - { - var count = 0; - var unregister = _eventBus!.Register(_ => count++); - - _eventBus.Send(); - Assert.That(count, Is.EqualTo(1)); - - unregister.UnRegister(); - _eventBus.Send(); - - Assert.That(count, Is.EqualTo(1)); - } - - /// - /// 测试不同类型事件互不干扰 - /// - [Test] - public void Different_Events_Should_Not_Interfere() - { - bool readyReceived = false; - bool destroyingReceived = false; - - _eventBus!.Register(_ => readyReceived = true); - _eventBus!.Register(_ => destroyingReceived = true); - - _eventBus.Send(); - - Assert.That(readyReceived, Is.True); - Assert.That(destroyingReceived, Is.False); - - _eventBus.Send(); - - Assert.That(destroyingReceived, Is.True); - } - - /// - /// 测试事件可以在没有订阅者时发送 - /// - [Test] - public void Event_Can_Be_Sent_Without_Subscribers() - { - Assert.That(() => _eventBus!.Send(), - Throws.Nothing); - } -} \ No newline at end of file diff --git a/GFramework.Core/architecture/Architecture.cs b/GFramework.Core/architecture/Architecture.cs index 77a8ec9..71c72ea 100644 --- a/GFramework.Core/architecture/Architecture.cs +++ b/GFramework.Core/architecture/Architecture.cs @@ -1,3 +1,7 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; using GFramework.Core.Abstractions.architecture; using GFramework.Core.Abstractions.enums; using GFramework.Core.Abstractions.environment; @@ -71,11 +75,6 @@ public abstract class Architecture( /// private IIocContainer Container => Services.Container; - /// - /// 获取事件总线 - /// - private IEventBus EventBus => Services.EventBus; - /// /// 当前架构的阶段 /// @@ -363,10 +362,9 @@ public abstract class Architecture( return; } - // 进入销毁阶段并发送销毁开始事件 + // 进入销毁阶段 _logger.Info("Starting architecture destruction"); EnterPhase(ArchitecturePhase.Destroying); - EventBus.Send(new ArchitectureEvents.ArchitectureDestroyingEvent()); // 销毁所有实现了 IDisposable 的组件(按注册逆序销毁) _logger.Info($"Destroying {_disposables.Count} disposable components"); @@ -389,9 +387,8 @@ public abstract class Architecture( _disposables.Clear(); _disposableSet.Clear(); - // 进入已销毁阶段并发送销毁完成事件 + // 进入已销毁阶段 EnterPhase(ArchitecturePhase.Destroyed); - EventBus.Send(new ArchitectureEvents.ArchitectureDestroyedEvent()); _logger.Info("Architecture destruction completed"); } @@ -499,7 +496,6 @@ public abstract class Architecture( { _logger.Error("Architecture initialization failed:", e); EnterPhase(ArchitecturePhase.FailedInitialization); - EventBus.Send(new ArchitectureEvents.ArchitectureFailedInitializationEvent()); throw; } } @@ -518,7 +514,6 @@ public abstract class Architecture( { _logger.Error("Architecture initialization failed:", e); EnterPhase(ArchitecturePhase.FailedInitialization); - EventBus.Send(new ArchitectureEvents.ArchitectureFailedInitializationEvent()); throw; } } @@ -560,7 +555,6 @@ public abstract class Architecture( _mInitialized = true; EnterPhase(ArchitecturePhase.Ready); - EventBus.Send(new ArchitectureEvents.ArchitectureLifecycleReadyEvent()); _logger.Info($"Architecture {GetType().Name} is ready - all components initialized"); } diff --git a/GFramework.Core/coroutine/CoroutineHelper.cs b/GFramework.Core/coroutine/CoroutineHelper.cs index 938fa92..59bfcd6 100644 --- a/GFramework.Core/coroutine/CoroutineHelper.cs +++ b/GFramework.Core/coroutine/CoroutineHelper.cs @@ -1,4 +1,7 @@ -using GFramework.Core.Abstractions.coroutine; +using System; +using System.Collections.Generic; +using System.Threading; +using GFramework.Core.Abstractions.coroutine; namespace GFramework.Core.coroutine; diff --git a/GFramework.Core/events/ArchitectureEvents.cs b/GFramework.Core/events/ArchitectureEvents.cs deleted file mode 100644 index 9146cfe..0000000 --- a/GFramework.Core/events/ArchitectureEvents.cs +++ /dev/null @@ -1,31 +0,0 @@ -namespace GFramework.Core.events; - -/// -/// 架构事件定义类,包含应用程序架构生命周期相关的事件结构体 -/// -public static class ArchitectureEvents -{ - /// - /// 架构生命周期准备就绪事件 - /// 当架构完成初始化并准备就绪时触发此事件 - /// - public readonly struct ArchitectureLifecycleReadyEvent; - - /// - /// 架构销毁中事件 - /// 当架构开始销毁过程时触发此事件,表示系统正在关闭 - /// - public readonly struct ArchitectureDestroyingEvent; - - /// - /// 架构已销毁事件 - /// 当架构完全销毁完成后触发此事件,表示系统已关闭 - /// - public readonly struct ArchitectureDestroyedEvent; - - /// - /// 架构初始化失败事件 - /// 当架构初始化过程中发生错误时触发此事件 - /// - public readonly struct ArchitectureFailedInitializationEvent; -} \ No newline at end of file diff --git a/GFramework.Core/events/DefaultUnRegister.cs b/GFramework.Core/events/DefaultUnRegister.cs index 79ea0b5..d2bd771 100644 --- a/GFramework.Core/events/DefaultUnRegister.cs +++ b/GFramework.Core/events/DefaultUnRegister.cs @@ -1,4 +1,5 @@ -using GFramework.Core.Abstractions.events; +using System; +using GFramework.Core.Abstractions.events; namespace GFramework.Core.events;