diff --git a/src/MessagePack.GeneratorCore/Generator/StringKey/StringKeyFormatterDeserializeHelper.cs b/src/MessagePack.GeneratorCore/Generator/StringKey/StringKeyFormatterDeserializeHelper.cs index 08829ff60..d9b21677b 100644 --- a/src/MessagePack.GeneratorCore/Generator/StringKey/StringKeyFormatterDeserializeHelper.cs +++ b/src/MessagePack.GeneratorCore/Generator/StringKey/StringKeyFormatterDeserializeHelper.cs @@ -44,28 +44,32 @@ private static bool IsConstructorParameter(ObjectSerializationInfo objectSeriali private static void Assign(StringBuilder buffer, in MemberInfoTuple member, bool canOverwrite, string indent, string tab, int tabCount) { - if (canOverwrite) + if (member.Info.IsWritable) { - if (member.Info.IsWritable) + if (canOverwrite) { buffer.Append("____result.").Append(member.Info.Name).Append(" = "); } - } - else - { - if (!member.IsConstructorParameter) + else { - buffer.Append("__").Append(member.Info.Name).Append("__IsInitialized = true;\r\n").Append(indent); - for (var i = 0; i < tabCount; i++) + if (!member.IsConstructorParameter) { - buffer.Append(tab); + buffer.Append("__").Append(member.Info.Name).Append("__IsInitialized = true;\r\n").Append(indent); + for (var i = 0; i < tabCount; i++) + { + buffer.Append(tab); + } } + + buffer.Append("__").Append(member.Info.Name).Append("__ = "); } - buffer.Append("__").Append(member.Info.Name).Append("__ = "); + buffer.Append(member.Info.GetDeserializeMethodString()).Append(";\r\n"); + } + else + { + buffer.Append("reader.Skip();\r\n"); } - - buffer.Append(member.Info.GetDeserializeMethodString()).Append(";\r\n"); } private static void ClassifyRecursion(StringBuilder buffer, string indent, int tabCount, int keyLength, IEnumerable memberCollection, bool canOverwrite)