From 86f6effd08e6d7fc7e035c0d67fc21f5b19fecae Mon Sep 17 00:00:00 2001 From: mewlist Date: Fri, 23 Feb 2024 12:39:02 +0900 Subject: [PATCH 1/2] Fix: some exceptions are ignored --- Runtime/Context/SceneContext.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Runtime/Context/SceneContext.cs b/Runtime/Context/SceneContext.cs index 01dd7da..668bb1b 100644 --- a/Runtime/Context/SceneContext.cs +++ b/Runtime/Context/SceneContext.cs @@ -131,6 +131,7 @@ await Task.WhenAll(injectableComponents.Select(x await Shutdown(); return; } + throw; } using (new ContextSpaceScope(this)) { From ffe101e44d67bf3737dd81af3c22bd213eae20fe Mon Sep 17 00:00:00 2001 From: mewlist Date: Fri, 23 Feb 2024 12:45:12 +0900 Subject: [PATCH 2/2] Destroy prefab instance when failed to inject. --- Runtime/DIContainer.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Runtime/DIContainer.cs b/Runtime/DIContainer.cs index 77e1bd2..257bc41 100644 --- a/Runtime/DIContainer.cs +++ b/Runtime/DIContainer.cs @@ -272,8 +272,16 @@ Component component if (go.GetComponent(typeof(IGameObjectContextRoot))) return instance; - foreach (var component in go.GetComponentsInChildren(typeof(IInjectableComponent))) - await InjectIntoAsync(component, args); + try + { + foreach (var component in go.GetComponentsInChildren(typeof(IInjectableComponent))) + await InjectIntoAsync(component, args); + } + catch (Exception e) + { + Object.Destroy(prefabInstance); + throw e; + } return instance; }