From 953c4db67842e97dd1527b5e1b1b1912f0e6262f Mon Sep 17 00:00:00 2001 From: walon Date: Fri, 15 Oct 2021 18:32:58 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E9=87=8D=E6=9E=84=E3=80=91=E4=BF=AE?= =?UTF-8?q?=E5=A4=8Dpath=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Luban.Job.Cfg/Source/Defs/DefField.cs | 61 ++++++++++++++++++----- 1 file changed, 49 insertions(+), 12 deletions(-) diff --git a/src/Luban.Job.Cfg/Source/Defs/DefField.cs b/src/Luban.Job.Cfg/Source/Defs/DefField.cs index 4939027..5a0bdb8 100644 --- a/src/Luban.Job.Cfg/Source/Defs/DefField.cs +++ b/src/Luban.Job.Cfg/Source/Defs/DefField.cs @@ -138,11 +138,19 @@ namespace Luban.Job.Cfg.Defs { if (ta.ElementType.Tags.TryGetValue("ref", out string refStr)) { - this.ValueRef = (RefValidator)ValidatorFactory.Create("ref", refStr); + this.ValueValidators.Add(this.ValueRef = (RefValidator)ValidatorFactory.Create("ref", refStr)); } if (CType.Tags.TryGetValue("ref", out string refStr2)) { - this.ValueRef = (RefValidator)ValidatorFactory.Create("ref", refStr2); + this.ValueValidators.Add(this.ValueRef = (RefValidator)ValidatorFactory.Create("ref", refStr2)); + } + if (ta.ElementType.Tags.TryGetValue("path", out string PathStr)) + { + this.ValueValidators.Add(ValidatorFactory.Create("path", PathStr)); + } + if (CType.Tags.TryGetValue("path", out string pathStr2)) + { + this.ValueValidators.Add(ValidatorFactory.Create("path", pathStr2)); } break; } @@ -150,11 +158,19 @@ namespace Luban.Job.Cfg.Defs { if (ta.ElementType.Tags.TryGetValue("ref", out string refStr)) { - this.ValueRef = (RefValidator)ValidatorFactory.Create("ref", refStr); + this.ValueValidators.Add(this.ValueRef = (RefValidator)ValidatorFactory.Create("ref", refStr)); } if (CType.Tags.TryGetValue("ref", out string refStr2)) { - this.ValueRef = (RefValidator)ValidatorFactory.Create("ref", refStr2); + this.ValueValidators.Add(this.ValueRef = (RefValidator)ValidatorFactory.Create("ref", refStr2)); + } + if (ta.ElementType.Tags.TryGetValue("path", out string PathStr)) + { + this.ValueValidators.Add(ValidatorFactory.Create("path", PathStr)); + } + if (CType.Tags.TryGetValue("path", out string pathStr2)) + { + this.ValueValidators.Add(ValidatorFactory.Create("path", pathStr2)); } break; } @@ -162,11 +178,19 @@ namespace Luban.Job.Cfg.Defs { if (ta.ElementType.Tags.TryGetValue("ref", out string refStr)) { - this.ValueRef = (RefValidator)ValidatorFactory.Create("ref", refStr); + this.ValueValidators.Add(this.ValueRef = (RefValidator)ValidatorFactory.Create("ref", refStr)); } if (CType.Tags.TryGetValue("ref", out string refStr2)) { - this.ValueRef = (RefValidator)ValidatorFactory.Create("ref", refStr2); + this.ValueValidators.Add(this.ValueRef = (RefValidator)ValidatorFactory.Create("ref", refStr2)); + } + if (ta.ElementType.Tags.TryGetValue("path", out string PathStr)) + { + this.ValueValidators.Add(ValidatorFactory.Create("path", PathStr)); + } + if (CType.Tags.TryGetValue("path", out string pathStr2)) + { + this.ValueValidators.Add(ValidatorFactory.Create("path", pathStr2)); } break; } @@ -174,11 +198,19 @@ namespace Luban.Job.Cfg.Defs { if (ta.KeyType.Tags.TryGetValue("ref", out string keyRefStr)) { - this.KeyRef = (RefValidator)ValidatorFactory.Create("ref", keyRefStr); + this.KeyValidators.Add(this.KeyRef = (RefValidator)ValidatorFactory.Create("ref", keyRefStr)); } if (ta.ValueType.Tags.TryGetValue("ref", out string valueRefStr)) { - this.ValueRef = (RefValidator)ValidatorFactory.Create("ref", valueRefStr); + this.ValueValidators.Add(this.ValueRef = (RefValidator)ValidatorFactory.Create("ref", valueRefStr)); + } + if (ta.KeyType.Tags.TryGetValue("path", out string PathStr)) + { + this.KeyValidators.Add(ValidatorFactory.Create("path", PathStr)); + } + if (ta.ValueType.Tags.TryGetValue("path", out string pathStr2)) + { + this.ValueValidators.Add(ValidatorFactory.Create("path", pathStr2)); } break; } @@ -188,6 +220,10 @@ namespace Luban.Job.Cfg.Defs { this.Ref = (RefValidator)ValidatorFactory.Create("ref", refStr2); } + if (CType.Tags.TryGetValue("path", out string pathStr2)) + { + this.Validators.Add(ValidatorFactory.Create("path", pathStr2)); + } break; } } @@ -265,7 +301,6 @@ namespace Luban.Job.Cfg.Defs private void ValidateRef(RefValidator val, TType refVarType) { - val.Compile(this); foreach (var table in val.Tables) { var cfgTable = Assembly.GetCfgTable(RefValidator.GetActualTableName(table)); @@ -293,19 +328,21 @@ namespace Luban.Job.Cfg.Defs { base.PostCompile(); + foreach (var val in KeyValidators.Concat(ValueValidators).Concat(Validators)) + { + val.Compile(this); + } + if (Ref != null) { - Validators.Add(Ref); ValidateRef(Ref, CType); } if (KeyRef != null) { - KeyValidators.Add(KeyRef); ValidateRef(KeyRef, (CType as TMap).KeyType); } if (ValueRef != null) { - ValueValidators.Add(ValueRef); switch (this.CType) { case TArray ta: