diff --git a/src/Luban.Job.Cfg/Source/Utils/DataUtil.cs b/src/Luban.Job.Cfg/Source/Utils/DataUtil.cs index 8cb5105..8661e60 100644 --- a/src/Luban.Job.Cfg/Source/Utils/DataUtil.cs +++ b/src/Luban.Job.Cfg/Source/Utils/DataUtil.cs @@ -245,7 +245,7 @@ namespace Luban.Job.Cfg.Utils { throw new Exception($"module:'{bean.Namespace}' 多态数据type不能为空"); } - DefBean defType = bean.HierarchyNotAbstractChildren.Cast().Where(c => c.Alias == subType || c.Name == subType || c.FullName == subType).FirstOrDefault(); + DefBean defType = bean.GetHierarchyChildren().Cast().Where(c => c.Alias == subType || c.Name == subType || c.FullName == subType).FirstOrDefault(); if (defType == null) { throw new Exception($"module:'{bean.Namespace}' type:'{subType}' 不是合法类型"); diff --git a/src/Luban.Job.Common/Source/Defs/DefBeanBase.cs b/src/Luban.Job.Common/Source/Defs/DefBeanBase.cs index 970ccf7..4e336ca 100644 --- a/src/Luban.Job.Common/Source/Defs/DefBeanBase.cs +++ b/src/Luban.Job.Common/Source/Defs/DefBeanBase.cs @@ -24,6 +24,22 @@ namespace Luban.Job.Common.Defs public List HierarchyNotAbstractChildren { get; set; } + public IEnumerable GetHierarchyChildren() + { + yield return this; + if (Children == null) + { + yield break; + } + foreach (var child in Children) + { + foreach(var c2 in child.GetHierarchyChildren()) + { + yield return c2; + } + } + } + public bool IsNotAbstractType => Children == null; public bool IsAbstractType => Children != null;