From c52407bdee269ce598d0ce9e8172ca396fba9c23 Mon Sep 17 00:00:00 2001 From: walon Date: Sat, 12 Feb 2022 21:46:09 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E8=B0=83=E6=95=B4=E3=80=91excel?= =?UTF-8?q?=E4=B9=8B=E7=B1=BB=E7=9A=84=E6=A0=BC=E5=BC=8F=E8=AF=BB=E5=8F=96?= =?UTF-8?q?=E5=A4=9A=E6=80=81=E7=B1=BB=E5=9E=8B=E6=97=B6=EF=BC=8C=E4=BC=98?= =?UTF-8?q?=E5=85=88=E6=9F=A5=E6=89=BE$type=E4=B9=8B=E7=B1=BB=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=EF=BC=8C=E5=86=8D=E6=9F=A5=E6=89=BE=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=5F=5Ftype=5F=5F=E5=AD=97=E6=AE=B5=20=E3=80=90=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E3=80=91=E4=BF=AE=E5=A4=8D=E7=94=9F=E6=88=90protocol?= =?UTF-8?q?=E5=BA=8F=E5=88=97=E5=8C=96=E5=8F=AF=E7=A9=BA=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E7=9A=84=E4=BB=A3=E7=A0=81=E7=9A=84=E7=BC=96=E8=AF=91=E9=94=99?= =?UTF-8?q?=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/DataConverts/FillSheetVisitor.cs | 2 +- .../Source/DataCreators/JsonDataCreator.cs | 2 +- .../Source/DataCreators/LuaDataCreator.cs | 10 +++++----- .../Source/DataCreators/SheetDataCreator.cs | 4 ++-- .../Source/DataCreators/XmlDataCreator.cs | 4 ++-- .../Source/DataCreators/YamlDataCreator.cs | 6 +++--- .../Source/TypeVisitors/CsSerializeVisitor.cs | 2 +- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/Luban.Job.Cfg/Source/DataConverts/FillSheetVisitor.cs b/src/Luban.Job.Cfg/Source/DataConverts/FillSheetVisitor.cs index ee52814..007405c 100644 --- a/src/Luban.Job.Cfg/Source/DataConverts/FillSheetVisitor.cs +++ b/src/Luban.Job.Cfg/Source/DataConverts/FillSheetVisitor.cs @@ -130,7 +130,7 @@ namespace Luban.Job.Cfg.DataConverts { if (data.Type.IsAbstractType) { - if (!x.SubTitles.TryGetValue(DefBean.FALLBACK_TYPE_NAME_KEY, out var typeTitle) && !x.SubTitles.TryGetValue(DefBean.EXCEL_TYPE_NAME_KEY, out typeTitle)) + if (!x.SubTitles.TryGetValue(DefBean.EXCEL_TYPE_NAME_KEY, out var typeTitle) && !x.SubTitles.TryGetValue(DefBean.FALLBACK_TYPE_NAME_KEY, out typeTitle)) { throw new Exception($"多态bean:{data.Type.FullName} 缺失 {DefBean.EXCEL_TYPE_NAME_KEY} 标题列"); } diff --git a/src/Luban.Job.Cfg/Source/DataCreators/JsonDataCreator.cs b/src/Luban.Job.Cfg/Source/DataCreators/JsonDataCreator.cs index 16b7d86..e523576 100644 --- a/src/Luban.Job.Cfg/Source/DataCreators/JsonDataCreator.cs +++ b/src/Luban.Job.Cfg/Source/DataCreators/JsonDataCreator.cs @@ -112,7 +112,7 @@ namespace Luban.Job.Cfg.DataCreators DefBean implBean; if (bean.IsAbstractType) { - if (!x.TryGetProperty(DefBean.FALLBACK_TYPE_NAME_KEY, out var typeNameProp) && !x.TryGetProperty(DefBean.JSON_TYPE_NAME_KEY, out typeNameProp)) + if (!x.TryGetProperty(DefBean.JSON_TYPE_NAME_KEY, out var typeNameProp) && !x.TryGetProperty(DefBean.FALLBACK_TYPE_NAME_KEY, out typeNameProp)) { throw new Exception($"结构:'{bean.FullName}' 是多态类型,必须用 '{DefBean.JSON_TYPE_NAME_KEY}' 字段指定 子类名"); } diff --git a/src/Luban.Job.Cfg/Source/DataCreators/LuaDataCreator.cs b/src/Luban.Job.Cfg/Source/DataCreators/LuaDataCreator.cs index bf17fb9..5deef74 100644 --- a/src/Luban.Job.Cfg/Source/DataCreators/LuaDataCreator.cs +++ b/src/Luban.Job.Cfg/Source/DataCreators/LuaDataCreator.cs @@ -154,14 +154,14 @@ namespace Luban.Job.Cfg.DataCreators if (bean.IsAbstractType) { string subType; - if (table.ContainsKey(DefBean.FALLBACK_TYPE_NAME_KEY)) - { - subType = (string)table[DefBean.FALLBACK_TYPE_NAME_KEY]; - } - else if(table.ContainsKey(DefBean.LUA_TYPE_NAME_KEY)) + if(table.ContainsKey(DefBean.LUA_TYPE_NAME_KEY)) { subType = (string)(table[DefBean.LUA_TYPE_NAME_KEY]); } + else if (table.ContainsKey(DefBean.FALLBACK_TYPE_NAME_KEY)) + { + subType = (string)table[DefBean.FALLBACK_TYPE_NAME_KEY]; + } else { throw new Exception($"结构:{bean.FullName} 是多态类型,必须用 {DefBean.LUA_TYPE_NAME_KEY} 字段指定 子类名"); diff --git a/src/Luban.Job.Cfg/Source/DataCreators/SheetDataCreator.cs b/src/Luban.Job.Cfg/Source/DataCreators/SheetDataCreator.cs index b65f24b..6940319 100644 --- a/src/Luban.Job.Cfg/Source/DataCreators/SheetDataCreator.cs +++ b/src/Luban.Job.Cfg/Source/DataCreators/SheetDataCreator.cs @@ -399,7 +399,7 @@ namespace Luban.Job.Cfg.DataCreators var originBean = (DefBean)type.Bean; if (originBean.IsAbstractType) { - TitleRow typeTitle = row.GetSubTitleNamedRow(DefBean.FALLBACK_TYPE_NAME_KEY) ?? row.GetSubTitleNamedRow(DefBean.EXCEL_TYPE_NAME_KEY); + TitleRow typeTitle = row.GetSubTitleNamedRow(DefBean.EXCEL_TYPE_NAME_KEY) ?? row.GetSubTitleNamedRow(DefBean.FALLBACK_TYPE_NAME_KEY); if (typeTitle == null) { throw new Exception($"type:'{originBean.FullName}' 是多态类型,需要定义'{DefBean.EXCEL_TYPE_NAME_KEY}'列来指定具体子类型"); @@ -421,7 +421,7 @@ namespace Luban.Job.Cfg.DataCreators { if (type.IsNullable) { - TitleRow typeTitle = row.GetSubTitleNamedRow(DefBean.FALLBACK_TYPE_NAME_KEY) ?? row.GetSubTitleNamedRow(DefBean.EXCEL_TYPE_NAME_KEY); + TitleRow typeTitle = row.GetSubTitleNamedRow(DefBean.EXCEL_TYPE_NAME_KEY) ?? row.GetSubTitleNamedRow(DefBean.FALLBACK_TYPE_NAME_KEY); if (typeTitle == null) { throw new Exception($"type:'{originBean.FullName}' 是可空类型,需要定义'{DefBean.EXCEL_TYPE_NAME_KEY}'列来指明是否可空"); diff --git a/src/Luban.Job.Cfg/Source/DataCreators/XmlDataCreator.cs b/src/Luban.Job.Cfg/Source/DataCreators/XmlDataCreator.cs index ccd6b13..da4cd71 100644 --- a/src/Luban.Job.Cfg/Source/DataCreators/XmlDataCreator.cs +++ b/src/Luban.Job.Cfg/Source/DataCreators/XmlDataCreator.cs @@ -96,10 +96,10 @@ namespace Luban.Job.Cfg.DataCreators DefBean implBean; if (bean.IsAbstractType) { - string subType = x.Attribute(DefBean.FALLBACK_TYPE_NAME_KEY)?.Value; + string subType = x.Attribute(DefBean.XML_TYPE_NAME_KEY)?.Value; if (string.IsNullOrEmpty(subType)) { - subType = x.Attribute(DefBean.XML_TYPE_NAME_KEY)?.Value; + subType = x.Attribute(DefBean.FALLBACK_TYPE_NAME_KEY)?.Value; } if (string.IsNullOrWhiteSpace(subType)) { diff --git a/src/Luban.Job.Cfg/Source/DataCreators/YamlDataCreator.cs b/src/Luban.Job.Cfg/Source/DataCreators/YamlDataCreator.cs index e1c3e76..b3e7e9a 100644 --- a/src/Luban.Job.Cfg/Source/DataCreators/YamlDataCreator.cs +++ b/src/Luban.Job.Cfg/Source/DataCreators/YamlDataCreator.cs @@ -102,8 +102,8 @@ namespace Luban.Job.Cfg.DataCreators return new DText(key, text); } - private static readonly YamlScalarNode s_typeNodeName = new(DefBean.FALLBACK_TYPE_NAME_KEY); - private static readonly YamlScalarNode s_typeNodeName2 = new(DefBean.JSON_TYPE_NAME_KEY); + private static readonly YamlScalarNode s_typeNodeName = new(DefBean.JSON_TYPE_NAME_KEY); + private static readonly YamlScalarNode s_typeNodeNameFallback = new(DefBean.FALLBACK_TYPE_NAME_KEY); public DType Accept(TBean type, YamlNode x, DefAssembly y) { @@ -113,7 +113,7 @@ namespace Luban.Job.Cfg.DataCreators DefBean implBean; if (bean.IsAbstractType) { - if (!m.Children.TryGetValue(s_typeNodeName, out var typeNode) && !m.Children.TryGetValue(s_typeNodeName2, out typeNode)) + if (!m.Children.TryGetValue(s_typeNodeName, out var typeNode) && !m.Children.TryGetValue(s_typeNodeNameFallback, out typeNode)) { throw new Exception($"bean:'{bean.FullName}'是多态,需要指定{DefBean.JSON_TYPE_NAME_KEY}属性.\n xml:{x}"); } diff --git a/src/Luban.Job.Common/Source/TypeVisitors/CsSerializeVisitor.cs b/src/Luban.Job.Common/Source/TypeVisitors/CsSerializeVisitor.cs index 9f442e0..dae970f 100644 --- a/src/Luban.Job.Common/Source/TypeVisitors/CsSerializeVisitor.cs +++ b/src/Luban.Job.Common/Source/TypeVisitors/CsSerializeVisitor.cs @@ -10,7 +10,7 @@ namespace Luban.Job.Common.TypeVisitors { if (type.IsNullable) { - return $"if({fieldName} != null){{ {bufName}.WriteBool(true); {type.Apply(CsUnderingSerializeVisitor.Ins, bufName, fieldName)} }} else {{ {bufName}.WriteBool(true); }}"; + return $"if({fieldName} != null){{ {bufName}.WriteBool(true); {type.Apply(CsUnderingSerializeVisitor.Ins, bufName, type.Apply(CsIsRawNullableTypeVisitor.Ins) ? fieldName : fieldName + ".Value" )} }} else {{ {bufName}.WriteBool(true); }}"; } else {