From 4a24c805d036cd87358258ff1baf3cdfc838ddc8 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Fri, 26 May 2023 23:32:29 +0800 Subject: [PATCH] fix find fields --- src/AutoInjectSystem.cs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/AutoInjectSystem.cs b/src/AutoInjectSystem.cs index 114cfd7..6d40a6d 100644 --- a/src/AutoInjectSystem.cs +++ b/src/AutoInjectSystem.cs @@ -28,7 +28,7 @@ namespace DCFApixels.DragonECS foreach (var system in allsystems) { Type systemType = system.GetType(); - foreach (var field in systemType.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)) + foreach (var field in GetAllFieldsFor(systemType)) { EcsInjectAttribute autoInjectAttribute = field.GetCustomAttribute(); if (autoInjectAttribute != null) @@ -50,7 +50,18 @@ namespace DCFApixels.DragonECS _notInjected.Add(item); } } - + private static List GetAllFieldsFor(Type type) + { + List result = new List(); + Do(type, result); + void Do(Type type, List result) + { + result.AddRange(type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)); + if (type.BaseType != null) + Do(type.BaseType, result); + } + return result; + } public void Inject(object obj) { _notInjected.Remove(obj.GetType());