From f7814a06120746a3ad0ba7a5ebf0d8d0dbf72702 Mon Sep 17 00:00:00 2001 From: walon Date: Wed, 6 Apr 2022 17:14:15 +0800 Subject: [PATCH] =?UTF-8?q?[opt]=20=E4=BC=98=E5=8C=96=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E4=B8=AD=E9=94=99=E8=AF=AF=E5=88=9B=E5=BB=BA=E4=BA=86=E6=8A=BD?= =?UTF-8?q?=E8=B1=A1=E7=B1=BB=E5=9E=8B=E6=97=B6=E7=9A=84=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Luban.Job.Cfg/Source/Utils/DataUtil.cs | 2 +- src/Luban.Job.Common/Source/Defs/DefBeanBase.cs | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) 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;