/// <summary> /// Create the template output /// </summary> public virtual string TransformText() { this.Write(@"// <auto-generated> // THIS (.cs) FILE IS GENERATED BY MPC(MessagePack-CSharp). DO NOT CHANGE IT. // </auto-generated> #pragma warning disable 618 #pragma warning disable 612 #pragma warning disable 414 #pragma warning disable 168 #pragma warning disable SA1129 // Do not use default value type constructor #pragma warning disable SA1200 // Using directives should be placed correctly #pragma warning disable SA1309 // Field names should not begin with underscore #pragma warning disable SA1312 // Variable names should begin with lower-case letter #pragma warning disable SA1403 // File may only contain a single namespace #pragma warning disable SA1649 // File name should match first type name namespace "); this.Write(this.ToStringHelper.ToStringWithCulture(Namespace)); this.Write("\r\n{\r\n using System;\r\n using System.Buffers;\r\n using System.Runtime.Inter" + "opServices;\r\n using MessagePack;\r\n"); var list = new List <ValueTuple <MemberSerializationInfo, byte[]> >(); foreach (var objInfo in ObjectSerializationInfos) { list.Clear(); foreach (var member in objInfo.Members) { var binary = EmbedStringHelper.Utf8.GetBytes(member.StringKey); list.Add(new ValueTuple <MemberSerializationInfo, byte[]>(member, binary)); } string formatterName = objInfo.Name + (objInfo.IsOpenGenericType ? $"Formatter<{string.Join(",", (object[])objInfo.GenericTypeParameters)}>" : "Formatter"); bool isFormatterResolverNecessary = ShouldUseFormatterResolverHelper.ShouldUseFormatterResolver(objInfo.Members); this.Write("\r\n public sealed class "); this.Write(this.ToStringHelper.ToStringWithCulture(formatterName)); this.Write(" : global::MessagePack.Formatters.IMessagePackFormatter<"); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.FullName)); this.Write(">\r\n {\r\n"); foreach (var memberAndBinary in list) { var member = memberAndBinary.Item1; var binary = memberAndBinary.Item2; this.Write(" // "); this.Write(this.ToStringHelper.ToStringWithCulture(member.StringKey)); this.Write("\r\n private static global::System.ReadOnlySpan<byte> GetSpan_"); this.Write(this.ToStringHelper.ToStringWithCulture(member.Name)); this.Write("() => "); this.Write(this.ToStringHelper.ToStringWithCulture(EmbedStringHelper.ToByteArrayString(binary))); this.Write(";\r\n"); } this.Write("\r\n public void Serialize(ref global::MessagePack.MessagePackWriter writer," + " "); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.FullName)); this.Write(" value, global::MessagePack.MessagePackSerializerOptions options)\r\n {\r\n"); if (objInfo.IsClass) { this.Write(" if (value is null)\r\n {\r\n writer.WriteNil();" + "\r\n return;\r\n }\r\n\r\n"); } if (isFormatterResolverNecessary) { this.Write(" IFormatterResolver formatterResolver = options.Resolver;\r\n"); } if (objInfo.HasIMessagePackSerializationCallbackReceiver) { if (objInfo.NeedsCastOnBefore) { this.Write(" ((global::MessagePack.IMessagePackSerializationCallbackReceiver)value" + ").OnBeforeSerialize();\r\n"); } else { this.Write(" value.OnBeforeSerialize();\r\n"); } } this.Write(" writer.WriteMapHeader("); this.Write(this.ToStringHelper.ToStringWithCulture(list.Count)); this.Write(");\r\n"); foreach (var memberAndBinary in list) { var member = memberAndBinary.Item1; this.Write(" writer.WriteRaw(GetSpan_"); this.Write(this.ToStringHelper.ToStringWithCulture(member.Name)); this.Write("());\r\n "); this.Write(this.ToStringHelper.ToStringWithCulture(member.GetSerializeMethodString())); this.Write(";\r\n"); } this.Write(" }\r\n\r\n public "); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.FullName)); this.Write(" Deserialize(ref global::MessagePack.MessagePackReader reader, global::MessagePac" + "k.MessagePackSerializerOptions options)\r\n {\r\n if (reader.TryRe" + "adNil())\r\n {\r\n"); if (objInfo.IsClass) { this.Write(" return null;\r\n"); } else { this.Write(" throw new global::System.InvalidOperationException(\"typecode is n" + "ull, struct not supported\");\r\n"); } this.Write(" }\r\n\r\n"); if (objInfo.Members.Length == 0) { this.Write(" reader.Skip();\r\n var ____result = new "); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.GetConstructorString())); this.Write(";\r\n"); } else { this.Write(" options.Security.DepthStep(ref reader);\r\n"); if (isFormatterResolverNecessary) { this.Write(" IFormatterResolver formatterResolver = options.Resolver;\r\n"); } this.Write(" var length = reader.ReadMapHeader();\r\n"); foreach (var memberInfo in objInfo.Members) { this.Write(" var __"); this.Write(this.ToStringHelper.ToStringWithCulture(memberInfo.Name)); this.Write("__ = default("); this.Write(this.ToStringHelper.ToStringWithCulture(memberInfo.Type)); this.Write(");\r\n"); } this.Write(@" for (int i = 0; i < length; i++) { ReadOnlySpan<byte> stringKey = global::MessagePack.Internal.CodeGenHelpers.ReadStringSpan(ref reader); switch (stringKey.Length) { default: FAIL: reader.Skip(); continue; "); this.Write(this.ToStringHelper.ToStringWithCulture(StringKeyFormatterDeserializeHelper.Classify(objInfo.Members, " "))); this.Write("\r\n }\r\n }\r\n\r\n var ____result = new "); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.GetConstructorString())); this.Write("\r\n {\r\n"); // Preparation for C#9 Record class foreach (var member in objInfo.Members.Where(x => x.IsWritable)) { this.Write(" "); this.Write(this.ToStringHelper.ToStringWithCulture(member.Name)); this.Write(" = __"); this.Write(this.ToStringHelper.ToStringWithCulture(member.Name)); this.Write("__,\r\n"); } this.Write(" };\r\n\r\n"); } if (objInfo.HasIMessagePackSerializationCallbackReceiver) { if (objInfo.NeedsCastOnAfter) { this.Write(" ((global::MessagePack.IMessagePackSerializationCallbackReceiver)____r" + "esult).OnAfterDeserialize();\r\n"); } else { this.Write(" ____result.OnAfterDeserialize();\r\n"); } } if (objInfo.Members.Length != 0) { this.Write(" reader.Depth--;\r\n"); } this.Write(" return ____result;\r\n }\r\n }\r\n"); } this.Write("}\r\n"); return(this.GenerationEnvironment.ToString()); }
/// <summary> /// Create the template output /// </summary> public virtual string TransformText() { this.Write(@"// <auto-generated> // THIS (.cs) FILE IS GENERATED BY MPC(MessagePack-CSharp). DO NOT CHANGE IT. // </auto-generated> #pragma warning disable 618 #pragma warning disable 612 #pragma warning disable 414 #pragma warning disable 168 #pragma warning disable CS1591 // document public APIs #pragma warning disable SA1129 // Do not use default value type constructor #pragma warning disable SA1309 // Field names should not begin with underscore #pragma warning disable SA1312 // Variable names should begin with lower-case letter #pragma warning disable SA1403 // File may only contain a single namespace #pragma warning disable SA1649 // File name should match first type name namespace "); this.Write(this.ToStringHelper.ToStringWithCulture(Namespace)); this.Write("\r\n{\r\n"); var list = new List <ValueTuple <MemberSerializationInfo, byte[]> >(); foreach (var objInfo in ObjectSerializationInfos) { list.Clear(); foreach (var member in objInfo.Members) { var binary = EmbedStringHelper.Utf8.GetBytes(member.StringKey); list.Add(new ValueTuple <MemberSerializationInfo, byte[]>(member, binary)); } bool isFormatterResolverNecessary = ShouldUseFormatterResolverHelper.ShouldUseFormatterResolver(objInfo.Members); this.Write(" public sealed class "); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.FormatterNameWithoutNameSpace)); this.Write(" : global::MessagePack.Formatters.IMessagePackFormatter<"); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.FullName)); this.Write(">\r\n"); foreach (var typeArg in objInfo.GenericTypeParameters.Where(x => x.HasConstraints)) { this.Write(" where "); this.Write(this.ToStringHelper.ToStringWithCulture(typeArg.Name)); this.Write(" : "); this.Write(this.ToStringHelper.ToStringWithCulture(typeArg.Constraints)); this.Write("\r\n"); } this.Write(" {\r\n"); for (var i = 0; i < list.Count; i++) { var member = list[i].Item1; var binary = list[i].Item2; this.Write(" // "); this.Write(this.ToStringHelper.ToStringWithCulture(member.StringKey)); this.Write("\r\n private static global::System.ReadOnlySpan<byte> GetSpan_"); this.Write(this.ToStringHelper.ToStringWithCulture(member.Name)); this.Write("() => "); this.Write(this.ToStringHelper.ToStringWithCulture(EmbedStringHelper.ToByteArrayString(binary))); this.Write(";\r\n"); } if (list.Count != 0) { this.Write("\r\n"); } this.Write(" public void Serialize(ref global::MessagePack.MessagePackWriter writer, "); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.FullName)); this.Write(" value, global::MessagePack.MessagePackSerializerOptions options)\r\n {\r\n"); if (objInfo.IsClass) { this.Write(" if (value is null)\r\n {\r\n writer.WriteNil();" + "\r\n return;\r\n }\r\n\r\n"); } if (isFormatterResolverNecessary) { this.Write(" var formatterResolver = options.Resolver;\r\n"); } if (objInfo.HasIMessagePackSerializationCallbackReceiver) { if (objInfo.NeedsCastOnBefore) { this.Write(" ((global::MessagePack.IMessagePackSerializationCallbackReceiver)value" + ").OnBeforeSerialize();\r\n"); } else { this.Write(" value.OnBeforeSerialize();\r\n"); } } this.Write(" writer.WriteMapHeader("); this.Write(this.ToStringHelper.ToStringWithCulture(list.Count)); this.Write(");\r\n"); foreach (var memberAndBinary in list) { var member = memberAndBinary.Item1; this.Write(" writer.WriteRaw(GetSpan_"); this.Write(this.ToStringHelper.ToStringWithCulture(member.Name)); this.Write("());\r\n "); this.Write(this.ToStringHelper.ToStringWithCulture(member.GetSerializeMethodString())); this.Write(";\r\n"); } this.Write(" }\r\n\r\n public "); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.FullName)); this.Write(" Deserialize(ref global::MessagePack.MessagePackReader reader, global::MessagePac" + "k.MessagePackSerializerOptions options)\r\n {\r\n if (reader.TryRe" + "adNil())\r\n {\r\n"); if (objInfo.IsClass) { this.Write(" return null;\r\n"); } else { this.Write(" throw new global::System.InvalidOperationException(\"typecode is n" + "ull, struct not supported\");\r\n"); } this.Write(" }\r\n\r\n"); if (objInfo.Members.Length == 0) { this.Write(" reader.Skip();\r\n var ____result = new "); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.GetConstructorString())); this.Write(";\r\n"); } else { this.Write(" options.Security.DepthStep(ref reader);\r\n"); if (isFormatterResolverNecessary) { this.Write(" var formatterResolver = options.Resolver;\r\n"); } this.Write(" var length = reader.ReadMapHeader();\r\n"); var canOverwrite = objInfo.ConstructorParameters.Length == 0; if (canOverwrite) { this.Write(" var ____result = new "); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.GetConstructorString())); this.Write(";\r\n"); } else { foreach (var member in objInfo.Members.Where(x => x.IsWritable || objInfo.ConstructorParameters.Any(p => p.Equals(x)))) { if (objInfo.ConstructorParameters.All(p => !p.Equals(member))) { this.Write(" var __"); this.Write(this.ToStringHelper.ToStringWithCulture(member.Name)); this.Write("__IsInitialized = false;\r\n"); } this.Write(" var __"); this.Write(this.ToStringHelper.ToStringWithCulture(member.Name)); this.Write("__ = default("); this.Write(this.ToStringHelper.ToStringWithCulture(member.Type)); this.Write(");\r\n"); } } this.Write(@" for (int i = 0; i < length; i++) { var stringKey = global::MessagePack.Internal.CodeGenHelpers.ReadStringSpan(ref reader); switch (stringKey.Length) { default: FAIL: reader.Skip(); continue; "); this.Write(this.ToStringHelper.ToStringWithCulture(StringKeyFormatterDeserializeHelper.Classify(objInfo, " ", canOverwrite))); this.Write("\r\n }\r\n }\r\n\r\n"); if (!canOverwrite) { this.Write(" var ____result = new "); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.GetConstructorString())); this.Write(";\r\n"); foreach (var member in objInfo.Members.Where(x => x.IsWritable && !objInfo.ConstructorParameters.Any(p => p.Equals(x)))) { this.Write(" if (__"); this.Write(this.ToStringHelper.ToStringWithCulture(member.Name)); this.Write("__IsInitialized)\r\n {\r\n ____result."); this.Write(this.ToStringHelper.ToStringWithCulture(member.Name)); this.Write(" = __"); this.Write(this.ToStringHelper.ToStringWithCulture(member.Name)); this.Write("__;\r\n }\r\n\r\n"); } } } if (objInfo.HasIMessagePackSerializationCallbackReceiver) { if (objInfo.NeedsCastOnAfter) { this.Write(" ((global::MessagePack.IMessagePackSerializationCallbackReceiver)____r" + "esult).OnAfterDeserialize();\r\n"); } else { this.Write(" ____result.OnAfterDeserialize();\r\n"); } } if (objInfo.Members.Length != 0) { this.Write(" reader.Depth--;\r\n"); } this.Write(" return ____result;\r\n }\r\n }\r\n\r\n"); } this.Write(@"} #pragma warning restore 168 #pragma warning restore 414 #pragma warning restore 618 #pragma warning restore 612 #pragma warning restore SA1129 // Do not use default value type constructor #pragma warning restore SA1309 // Field names should not begin with underscore #pragma warning restore SA1312 // Variable names should begin with lower-case letter #pragma warning restore SA1403 // File may only contain a single namespace #pragma warning restore SA1649 // File name should match first type name "); return(this.GenerationEnvironment.ToString()); }
/// <summary> /// Create the template output /// </summary> public virtual string TransformText() { this.Write(@"// <auto-generated> // THIS (.cs) FILE IS GENERATED BY MPC(MessagePack-CSharp). DO NOT CHANGE IT. // </auto-generated> #pragma warning disable 618 #pragma warning disable 612 #pragma warning disable 414 #pragma warning disable 168 #pragma warning disable SA1129 // Do not use default value type constructor #pragma warning disable SA1200 // Using directives should be placed correctly #pragma warning disable SA1309 // Field names should not begin with underscore #pragma warning disable SA1312 // Variable names should begin with lower-case letter #pragma warning disable SA1403 // File may only contain a single namespace #pragma warning disable SA1649 // File name should match first type name namespace "); this.Write(this.ToStringHelper.ToStringWithCulture(Namespace)); this.Write("\r\n{\r\n using System;\r\n using System.Buffers;\r\n using MessagePack;\r\n"); foreach (var objInfo in ObjectSerializationInfos) { bool isFormatterResolverNecessary = ShouldUseFormatterResolverHelper.ShouldUseFormatterResolver(objInfo.Members); this.Write("\r\n public sealed class "); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.Name)); this.Write("Formatter"); this.Write(this.ToStringHelper.ToStringWithCulture((objInfo.IsOpenGenericType ? $"<{string.Join(",", objInfo.GenericTypeParameters.Select(x => x.Name))}>" : ""))); this.Write(" : global::MessagePack.Formatters.IMessagePackFormatter<"); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.FullName)); this.Write(">\r\n"); foreach (var typeArg in objInfo.GenericTypeParameters.Where(x => x.HasConstraints)) { this.Write(" where "); this.Write(this.ToStringHelper.ToStringWithCulture(typeArg.Name)); this.Write(" : "); this.Write(this.ToStringHelper.ToStringWithCulture(typeArg.Constraints)); this.Write("\r\n"); } this.Write(" {\r\n"); foreach (var item in objInfo.Members) { if (item.CustomFormatterTypeName != null) { this.Write(" "); this.Write(this.ToStringHelper.ToStringWithCulture(item.CustomFormatterTypeName)); this.Write(" __"); this.Write(this.ToStringHelper.ToStringWithCulture(item.Name)); this.Write("CustomFormatter__ = new "); this.Write(this.ToStringHelper.ToStringWithCulture(item.CustomFormatterTypeName)); this.Write("();\r\n"); } } this.Write("\r\n public void Serialize(ref MessagePackWriter writer, "); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.FullName)); this.Write(" value, global::MessagePack.MessagePackSerializerOptions options)\r\n {\r\n"); if (objInfo.IsClass) { this.Write(" if (value == null)\r\n {\r\n writer.WriteNil();" + "\r\n return;\r\n }\r\n\r\n"); } if (isFormatterResolverNecessary) { this.Write(" IFormatterResolver formatterResolver = options.Resolver;\r\n"); } if (objInfo.HasIMessagePackSerializationCallbackReceiver && objInfo.NeedsCastOnBefore) { this.Write(" ((IMessagePackSerializationCallbackReceiver)value).OnBeforeSerialize(" + ");\r\n"); } else if (objInfo.HasIMessagePackSerializationCallbackReceiver) { this.Write(" value.OnBeforeSerialize();\r\n"); } this.Write(" writer.WriteArrayHeader("); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.MaxKey + 1)); this.Write(");\r\n"); for (var i = 0; i <= objInfo.MaxKey; i++) { var member = objInfo.GetMember(i); if (member == null) { this.Write(" writer.WriteNil();\r\n"); } else { this.Write(" "); this.Write(this.ToStringHelper.ToStringWithCulture(member.GetSerializeMethodString())); this.Write(";\r\n"); } } this.Write(" }\r\n\r\n public "); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.FullName)); this.Write(" Deserialize(ref MessagePackReader reader, global::MessagePack.MessagePackSeriali" + "zerOptions options)\r\n {\r\n if (reader.TryReadNil())\r\n " + " {\r\n"); if (objInfo.IsClass) { this.Write(" return null;\r\n"); } else { this.Write(" throw new InvalidOperationException(\"typecode is null, struct not" + " supported\");\r\n"); } this.Write(" }\r\n\r\n options.Security.DepthStep(ref reader);\r\n"); if (isFormatterResolverNecessary) { this.Write(" IFormatterResolver formatterResolver = options.Resolver;\r\n"); } this.Write(" var length = reader.ReadArrayHeader();\r\n"); foreach (var x in objInfo.Members) { this.Write(" var __"); this.Write(this.ToStringHelper.ToStringWithCulture(x.Name)); this.Write("__ = default("); this.Write(this.ToStringHelper.ToStringWithCulture(x.Type)); this.Write(");\r\n"); } this.Write("\r\n for (int i = 0; i < length; i++)\r\n {\r\n sw" + "itch (i)\r\n {\r\n"); foreach (var x in objInfo.Members) { this.Write(" case "); this.Write(this.ToStringHelper.ToStringWithCulture(x.IntKey)); this.Write(":\r\n __"); this.Write(this.ToStringHelper.ToStringWithCulture(x.Name)); this.Write("__ = "); this.Write(this.ToStringHelper.ToStringWithCulture(x.GetDeserializeMethodString())); this.Write(";\r\n break;\r\n"); } this.Write(" default:\r\n reader.Skip();\r\n " + " break;\r\n }\r\n }\r\n\r\n var ____res" + "ult = new "); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.GetConstructorString())); this.Write(";\r\n"); foreach (var x in objInfo.Members.Where(x => x.IsWritable)) { this.Write(" ____result."); this.Write(this.ToStringHelper.ToStringWithCulture(x.Name)); this.Write(" = __"); this.Write(this.ToStringHelper.ToStringWithCulture(x.Name)); this.Write("__;\r\n"); } if (objInfo.HasIMessagePackSerializationCallbackReceiver && objInfo.NeedsCastOnAfter) { this.Write(" ((IMessagePackSerializationCallbackReceiver)____result).OnAfterDeseri" + "alize();\r\n"); } else if (objInfo.HasIMessagePackSerializationCallbackReceiver) { this.Write(" ____result.OnAfterDeserialize();\r\n"); } this.Write(" reader.Depth--;\r\n return ____result;\r\n }\r\n }\r\n"); } this.Write(@"} #pragma warning restore 168 #pragma warning restore 414 #pragma warning restore 618 #pragma warning restore 612 #pragma warning restore SA1129 // Do not use default value type constructor #pragma warning restore SA1200 // Using directives should be placed correctly #pragma warning restore SA1309 // Field names should not begin with underscore #pragma warning restore SA1312 // Variable names should begin with lower-case letter #pragma warning restore SA1403 // File may only contain a single namespace #pragma warning restore SA1649 // File name should match first type name "); return(this.GenerationEnvironment.ToString()); }
/// <summary> /// Create the template output /// </summary> public virtual string TransformText() { this.Write(@"// <auto-generated> // THIS (.cs) FILE IS GENERATED BY MPC(MessagePack-CSharp). DO NOT CHANGE IT. // </auto-generated> #pragma warning disable 618 #pragma warning disable 612 #pragma warning disable 414 #pragma warning disable 168 #pragma warning disable SA1129 // Do not use default value type constructor #pragma warning disable SA1200 // Using directives should be placed correctly #pragma warning disable SA1309 // Field names should not begin with underscore #pragma warning disable SA1312 // Variable names should begin with lower-case letter #pragma warning disable SA1403 // File may only contain a single namespace #pragma warning disable SA1649 // File name should match first type name namespace "); this.Write(this.ToStringHelper.ToStringWithCulture(Namespace)); this.Write("\r\n{\r\n using global::System.Buffers;\r\n using global::MessagePack;\r\n"); foreach (var objInfo in ObjectSerializationInfos) { bool isFormatterResolverNecessary = ShouldUseFormatterResolverHelper.ShouldUseFormatterResolver(objInfo.Members); this.Write("\r\n public sealed class "); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.FormatterNameWithoutNameSpace)); this.Write(" : global::MessagePack.Formatters.IMessagePackFormatter<"); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.FullName)); this.Write(">\r\n"); foreach (var typeArg in objInfo.GenericTypeParameters.Where(x => x.HasConstraints)) { this.Write(" where "); this.Write(this.ToStringHelper.ToStringWithCulture(typeArg.Name)); this.Write(" : "); this.Write(this.ToStringHelper.ToStringWithCulture(typeArg.Constraints)); this.Write("\r\n"); } this.Write(" {\r\n"); foreach (var item in objInfo.Members) { if (item.CustomFormatterTypeName != null) { this.Write(" private readonly "); this.Write(this.ToStringHelper.ToStringWithCulture(item.CustomFormatterTypeName)); this.Write(" __"); this.Write(this.ToStringHelper.ToStringWithCulture(item.Name)); this.Write("CustomFormatter__ = new "); this.Write(this.ToStringHelper.ToStringWithCulture(item.CustomFormatterTypeName)); this.Write("();\r\n"); } } this.Write("\r\n public void Serialize(ref global::MessagePack.MessagePackWriter writer," + " "); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.FullName)); this.Write(" value, global::MessagePack.MessagePackSerializerOptions options)\r\n {\r\n"); if (objInfo.IsClass) { this.Write(" if (value == null)\r\n {\r\n writer.WriteNil();" + "\r\n return;\r\n }\r\n\r\n"); } if (isFormatterResolverNecessary) { this.Write(" global::MessagePack.IFormatterResolver formatterResolver = options.Re" + "solver;\r\n"); } if (objInfo.HasIMessagePackSerializationCallbackReceiver) { if (objInfo.NeedsCastOnBefore) { this.Write(" ((global::MessagePack.IMessagePackSerializationCallbackReceiver)value" + ").OnBeforeSerialize();\r\n"); } else { this.Write(" value.OnBeforeSerialize();\r\n"); } } this.Write(" writer.WriteArrayHeader("); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.MaxKey + 1)); this.Write(");\r\n"); for (var i = 0; i <= objInfo.MaxKey; i++) { var member = objInfo.GetMember(i); if (member == null) { this.Write(" writer.WriteNil();\r\n"); } else { this.Write(" "); this.Write(this.ToStringHelper.ToStringWithCulture(member.GetSerializeMethodString())); this.Write(";\r\n"); } } this.Write(" }\r\n\r\n public "); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.FullName)); this.Write(" Deserialize(ref global::MessagePack.MessagePackReader reader, global::MessagePac" + "k.MessagePackSerializerOptions options)\r\n {\r\n if (reader.TryRe" + "adNil())\r\n {\r\n"); if (objInfo.IsClass) { this.Write(" return null;\r\n"); } else { this.Write(" throw new global::System.InvalidOperationException(\"typecode is n" + "ull, struct not supported\");\r\n"); } this.Write(" }\r\n\r\n"); if (objInfo.MaxKey == -1 && !objInfo.HasIMessagePackSerializationCallbackReceiver) { this.Write(" reader.Skip();\r\n return new "); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.GetConstructorString())); this.Write(";\r\n"); } else { this.Write(" options.Security.DepthStep(ref reader);\r\n"); if (isFormatterResolverNecessary) { this.Write(" global::MessagePack.IFormatterResolver formatterResolver = options.Re" + "solver;\r\n"); } this.Write(" var length = reader.ReadArrayHeader();\r\n"); var canOverwrite = objInfo.ConstructorParameters.Length == 0; if (canOverwrite) { this.Write(" var ____result = new "); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.GetConstructorString())); this.Write(";\r\n"); } else { foreach (var member in objInfo.Members) { this.Write(" var __"); this.Write(this.ToStringHelper.ToStringWithCulture(member.Name)); this.Write("__ = default("); this.Write(this.ToStringHelper.ToStringWithCulture(member.Type)); this.Write(");\r\n"); } } this.Write("\r\n for (int i = 0; i < length; i++)\r\n {\r\n sw" + "itch (i)\r\n {\r\n"); for (var memberIndex = 0; memberIndex <= objInfo.MaxKey; memberIndex++) { var member = objInfo.GetMember(memberIndex); if (member == null) { continue; } this.Write(" case "); this.Write(this.ToStringHelper.ToStringWithCulture(member.IntKey)); this.Write(":\r\n"); if (canOverwrite) { if (member.IsWritable) { this.Write(" ____result."); this.Write(this.ToStringHelper.ToStringWithCulture(member.Name)); this.Write(" = "); this.Write(this.ToStringHelper.ToStringWithCulture(member.GetDeserializeMethodString())); this.Write(";\r\n"); } else { this.Write(" "); this.Write(this.ToStringHelper.ToStringWithCulture(member.GetDeserializeMethodString())); this.Write(";\r\n"); } } else { this.Write(" __"); this.Write(this.ToStringHelper.ToStringWithCulture(member.Name)); this.Write("__ = "); this.Write(this.ToStringHelper.ToStringWithCulture(member.GetDeserializeMethodString())); this.Write(";\r\n"); } this.Write(" break;\r\n"); } this.Write(" default:\r\n reader.Skip();\r\n " + " break;\r\n }\r\n }\r\n\r\n"); if (!canOverwrite) { this.Write(" var ____result = new "); this.Write(this.ToStringHelper.ToStringWithCulture(objInfo.GetConstructorString())); this.Write(";\r\n"); bool memberAssignExists = false; for (var memberIndex = 0; memberIndex <= objInfo.MaxKey; memberIndex++) { var member = objInfo.GetMember(memberIndex); if (member == null || !member.IsWritable || objInfo.ConstructorParameters.Any(p => p.Equals(member))) { continue; } memberAssignExists = true; this.Write(" if (length <= "); this.Write(this.ToStringHelper.ToStringWithCulture(memberIndex)); this.Write(")\r\n {\r\n goto MEMBER_ASSIGNMENT_END;\r\n }\r\n\r\n " + " ____result."); this.Write(this.ToStringHelper.ToStringWithCulture(member.Name)); this.Write(" = __"); this.Write(this.ToStringHelper.ToStringWithCulture(member.Name)); this.Write("__;\r\n"); } if (memberAssignExists) { this.Write("\r\n MEMBER_ASSIGNMENT_END:\r\n"); } } if (objInfo.HasIMessagePackSerializationCallbackReceiver) { if (objInfo.NeedsCastOnAfter) { this.Write(" ((global::MessagePack.IMessagePackSerializationCallbackReceiver)____r" + "esult).OnAfterDeserialize();\r\n"); } else { this.Write(" ____result.OnAfterDeserialize();\r\n"); } } this.Write(" reader.Depth--;\r\n return ____result;\r\n"); } this.Write(" }\r\n }\r\n"); } this.Write(@"} #pragma warning restore 168 #pragma warning restore 414 #pragma warning restore 618 #pragma warning restore 612 #pragma warning restore SA1129 // Do not use default value type constructor #pragma warning restore SA1200 // Using directives should be placed correctly #pragma warning restore SA1309 // Field names should not begin with underscore #pragma warning restore SA1312 // Variable names should begin with lower-case letter #pragma warning restore SA1403 // File may only contain a single namespace #pragma warning restore SA1649 // File name should match first type name "); return(this.GenerationEnvironment.ToString()); }