【修复】修复proto c#对可空变量序列化的bug

main
walon 2022-02-13 11:57:55 +08:00
parent c52407bdee
commit 034f0dd21b
2 changed files with 3 additions and 16 deletions

View File

@ -10,17 +10,12 @@ namespace Luban.Job.Common.TypeVisitors
{ {
if (type.IsNullable) if (type.IsNullable)
{ {
return $"if({fieldName} != null){{ {bufName}.WriteBool(true); {type.Apply(CsUnderingSerializeVisitor.Ins, bufName, type.Apply(CsIsRawNullableTypeVisitor.Ins) ? fieldName : fieldName + ".Value" )} }} else {{ {bufName}.WriteBool(true); }}"; return $"{{ if({fieldName} is {type.Apply(CsUnderingDefineTypeName.Ins)} __value__){{ {bufName}.WriteBool(true); {type.Apply(CsUnderingSerializeVisitor.Ins, bufName, "__value__" )} }} else {{ {bufName}.WriteBool(false); }} }}";
} }
else else
{ {
return type.Apply(CsUnderingSerializeVisitor.Ins, bufName, fieldName); return type.Apply(CsUnderingSerializeVisitor.Ins, bufName, fieldName);
} }
} }
public override string Accept(TBean type, string bufName, string fieldName)
{
return type.Apply(CsUnderingSerializeVisitor.Ins, bufName, fieldName);
}
} }
} }

View File

@ -40,15 +40,8 @@ namespace {{x.namespace_with_top_module}}
public static void Serialize{{name}}(ByteBuf _buf, {{name}} x) public static void Serialize{{name}}(ByteBuf _buf, {{name}} x)
{ {
{{~if is_abstract_type~}} {{~if is_abstract_type~}}
if (x != null)
{
_buf.WriteInt(x.GetTypeId()); _buf.WriteInt(x.GetTypeId());
x.Serialize(_buf); x.Serialize(_buf);
}
else
{
_buf.WriteInt(0);
}
{{~else~}} {{~else~}}
x.Serialize(_buf); x.Serialize(_buf);
{{~end~}} {{~end~}}
@ -60,7 +53,6 @@ namespace {{x.namespace_with_top_module}}
{{full_name}} x; {{full_name}} x;
switch (_buf.ReadInt()) switch (_buf.ReadInt())
{ {
case 0 : return null;
{{~ for child in x.hierarchy_not_abstract_children~}} {{~ for child in x.hierarchy_not_abstract_children~}}
case {{child.full_name}}.__ID__: x = new {{child.full_name}}(); break; case {{child.full_name}}.__ID__: x = new {{child.full_name}}(); break;
{{~end~}} {{~end~}}