diff --git a/src/Luban.Job.Cfg/Source/Defs/DefAssembly.cs b/src/Luban.Job.Cfg/Source/Defs/DefAssembly.cs index 2e72f14..367742f 100644 --- a/src/Luban.Job.Cfg/Source/Defs/DefAssembly.cs +++ b/src/Luban.Job.Cfg/Source/Defs/DefAssembly.cs @@ -166,12 +166,12 @@ namespace Luban.Job.Cfg.Defs public List GetAllTables() { - return Types.Values.Where(t => t is DefTable).Cast().ToList(); + return TypeList.Where(t => t is DefTable).Cast().ToList(); } public List GetExportTables() { - return Types.Values.Where(t => t is DefTable ct + return TypeList.Where(t => t is DefTable ct && !_outputExcludeTables.Contains(t.FullName) && (_outputIncludeTables.Contains(t.FullName) || (_overrideOutputTables == null ? ct.NeedExport : _overrideOutputTables.Contains(ct.FullName))) ).Select(t => (DefTable)t).ToList(); @@ -313,12 +313,12 @@ namespace Luban.Job.Cfg.Defs _cfgServices.AddRange(defines.Services); - foreach (var type in Types.Values) + foreach (var type in TypeList) { type.AssemblyBase = this; } - foreach (var type in Types.Values) + foreach (var type in TypeList) { try { @@ -332,7 +332,7 @@ namespace Luban.Job.Cfg.Defs throw; } } - foreach (var type in Types.Values) + foreach (var type in TypeList) { try { @@ -348,7 +348,7 @@ namespace Luban.Job.Cfg.Defs } } - foreach (var type in Types.Values) + foreach (var type in TypeList) { try { diff --git a/src/Luban.Job.Cfg/Source/Defs/DefBean.cs b/src/Luban.Job.Cfg/Source/Defs/DefBean.cs index afe5a3f..53e11b2 100644 --- a/src/Luban.Job.Cfg/Source/Defs/DefBean.cs +++ b/src/Luban.Job.Cfg/Source/Defs/DefBean.cs @@ -158,29 +158,9 @@ namespace Luban.Job.Cfg.Defs return null; } - private void SetUpParent() - { - if (ParentDefType == null && !string.IsNullOrEmpty(Parent)) - { - if ((ParentDefType = (DefBean)AssemblyBase.GetDefType(Namespace, Parent)) == null) - { - throw new Exception($"bean:'{FullName}' parent:'{Parent}' not exist"); - } - if (ParentDefType.Children == null) - { - ParentDefType.Children = new List(); - } - ParentDefType.Children.Add(this); - ((DefBean)ParentDefType).SetUpParent(); - } - } - public override void PreCompile() { - SetUpParent(); - - CollectHierarchyFields(HierarchyFields); - + base.PreCompile(); this.ExportFields = this.Fields.Select(f => (DefField)f).Where(f => f.NeedExport).ToList(); this.HierarchyExportFields = this.HierarchyFields.Select(f => (DefField)f).Where(f => f.NeedExport).ToList(); } diff --git a/src/Luban.Job.Common/Source/Defs/DefAssemblyBase.cs b/src/Luban.Job.Common/Source/Defs/DefAssemblyBase.cs index eaaef2d..bdec81c 100644 --- a/src/Luban.Job.Common/Source/Defs/DefAssemblyBase.cs +++ b/src/Luban.Job.Common/Source/Defs/DefAssemblyBase.cs @@ -34,6 +34,8 @@ namespace Luban.Job.Common.Defs public Dictionary Types { get; } = new Dictionary(); + public List TypeList { get; } = new List(); + private readonly Dictionary _notCaseSenseTypes = new(); private readonly HashSet _namespaces = new(); @@ -194,6 +196,7 @@ namespace Luban.Job.Common.Defs } Types.Add(fullName, type); + TypeList.Add(type); } public DefTypeBase GetDefType(string fullName) diff --git a/src/Luban.Job.Common/Source/Defs/DefBeanBase.cs b/src/Luban.Job.Common/Source/Defs/DefBeanBase.cs index 4e336ca..d28ee79 100644 --- a/src/Luban.Job.Common/Source/Defs/DefBeanBase.cs +++ b/src/Luban.Job.Common/Source/Defs/DefBeanBase.cs @@ -154,9 +154,9 @@ namespace Luban.Job.Common.Defs fields.AddRange(Fields); } - public override void PreCompile() + private void SetUpParentRecursively() { - if (!string.IsNullOrEmpty(Parent)) + if (ParentDefType == null && !string.IsNullOrEmpty(Parent)) { if ((ParentDefType = (DefBeanBase)AssemblyBase.GetDefType(Namespace, Parent)) == null) { @@ -167,8 +167,13 @@ namespace Luban.Job.Common.Defs ParentDefType.Children = new List(); } ParentDefType.Children.Add(this); + ParentDefType.SetUpParentRecursively(); } + } + public override void PreCompile() + { + SetUpParentRecursively(); CollectHierarchyFields(HierarchyFields); } diff --git a/src/Luban.Job.Db/Source/Defs/DefAssembly.cs b/src/Luban.Job.Db/Source/Defs/DefAssembly.cs index 1efcc38..4f138dc 100644 --- a/src/Luban.Job.Db/Source/Defs/DefAssembly.cs +++ b/src/Luban.Job.Db/Source/Defs/DefAssembly.cs @@ -48,12 +48,12 @@ namespace Luban.Job.Db.Defs AddType(new DefTable(p)); } - foreach (var type in Types.Values) + foreach (var type in TypeList) { type.AssemblyBase = this; } - foreach (var type in Types.Values) + foreach (var type in TypeList) { try { @@ -67,7 +67,7 @@ namespace Luban.Job.Db.Defs throw; } } - foreach (var type in Types.Values) + foreach (var type in TypeList) { try { @@ -82,7 +82,7 @@ namespace Luban.Job.Db.Defs throw; } } - foreach (var type in Types.Values) + foreach (var type in TypeList) { try { @@ -101,7 +101,7 @@ namespace Luban.Job.Db.Defs public List GetExportTypes() { - return Types.Values.ToList(); + return TypeList; } } } diff --git a/src/Luban.Job.Proto/Source/Defs/DefAssembly.cs b/src/Luban.Job.Proto/Source/Defs/DefAssembly.cs index 981facc..ca9254f 100644 --- a/src/Luban.Job.Proto/Source/Defs/DefAssembly.cs +++ b/src/Luban.Job.Proto/Source/Defs/DefAssembly.cs @@ -50,12 +50,12 @@ namespace Luban.Job.Proto.Defs AddType(new DefRpc(r)); } - foreach (var type in Types.Values) + foreach (var type in TypeList) { type.AssemblyBase = this; } - foreach (var type in Types.Values) + foreach (var type in TypeList) { try { @@ -69,7 +69,7 @@ namespace Luban.Job.Proto.Defs throw; } } - foreach (var type in Types.Values) + foreach (var type in TypeList) { try { @@ -84,7 +84,7 @@ namespace Luban.Job.Proto.Defs throw; } } - foreach (var type in Types.Values) + foreach (var type in TypeList) { try { @@ -104,7 +104,7 @@ namespace Luban.Job.Proto.Defs public List GetExportTypes() { - return Types.Values.ToList(); + return TypeList; } } }