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());