diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2021-11-05 20:50:00 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-05 20:50:00 +0300 |
commit | b4fb2ed708edc223b022077513086cab0c16ee4b (patch) | |
tree | a7904f14bfafacf9667c92ce42f4bd9908abb287 /sandbox | |
parent | ae79dc68e8fe4f03f4c19bd76e4d1f8bb7c5a984 (diff) | |
parent | 04cfbd755f0548aa4924431bfa705f1dda205e81 (diff) |
Merge pull request #1330 from AArnott/fix1328
Fix MessagePackFormatterAttribute for many built-in formatter types
Diffstat (limited to 'sandbox')
-rw-r--r-- | sandbox/DynamicCodeDumper/DynamicCodeDumper.csproj | 3 | ||||
-rw-r--r-- | sandbox/DynamicCodeDumper/Program.cs | 1 | ||||
-rw-r--r-- | sandbox/Sandbox/Generated.cs | 249 |
3 files changed, 152 insertions, 101 deletions
diff --git a/sandbox/DynamicCodeDumper/DynamicCodeDumper.csproj b/sandbox/DynamicCodeDumper/DynamicCodeDumper.csproj index 4ef220a0..f7f443f0 100644 --- a/sandbox/DynamicCodeDumper/DynamicCodeDumper.csproj +++ b/sandbox/DynamicCodeDumper/DynamicCodeDumper.csproj @@ -132,6 +132,9 @@ <Compile Include="..\..\src\MessagePack.UnityClient\Assets\Scripts\MessagePack\Resolvers\DynamicUnionResolver.cs"> <Link>Code\DynamicUnionResolver.cs</Link> </Compile> + <Compile Include="..\..\src\MessagePack.UnityClient\Assets\Scripts\MessagePack\Resolvers\ResolverUtilities.cs"> + <Link>Code\ResolverUtilities.cs</Link> + </Compile> <Compile Include="..\..\src\MessagePack.UnityClient\Assets\Scripts\MessagePack\StringEncoding.cs"> <Link>Code\StringEncoding.cs</Link> </Compile> diff --git a/sandbox/DynamicCodeDumper/Program.cs b/sandbox/DynamicCodeDumper/Program.cs index 14f6199e..0d74db48 100644 --- a/sandbox/DynamicCodeDumper/Program.cs +++ b/sandbox/DynamicCodeDumper/Program.cs @@ -44,6 +44,7 @@ namespace DynamicCodeDumper ////DynamicObjectResolver.Instance.GetFormatter<StringKeySerializerTarget>(); ////DynamicObjectResolver.Instance.GetFormatter<LongestString>(); IMessagePackFormatter<MyClass> f = DynamicObjectResolverAllowPrivate.Instance.GetFormatter<MyClass>(); + ////IMessagePackFormatter<MessagePackFormatterFieldUser> f = DynamicObjectResolver.Instance.GetFormatter<MessagePackFormatterFieldUser>(); ////DynamicObjectResolver.Instance.GetFormatter<StringKeySerializerTargetBinary>(); ////DynamicObjectResolver.Instance.GetFormatter<Callback1>(); ////DynamicObjectResolver.Instance.GetFormatter<Callback1_2>(); diff --git a/sandbox/Sandbox/Generated.cs b/sandbox/Sandbox/Generated.cs index 6db29c4c..64f68f84 100644 --- a/sandbox/Sandbox/Generated.cs +++ b/sandbox/Sandbox/Generated.cs @@ -49,7 +49,7 @@ namespace MessagePack.Resolvers static GeneratedResolverGetFormatterHelper() { - lookup = new global::System.Collections.Generic.Dictionary<Type, int>(71) + lookup = new global::System.Collections.Generic.Dictionary<Type, int>(72) { { typeof(global::GlobalMyEnum[,]), 0 }, { typeof(global::GlobalMyEnum[]), 1 }, @@ -72,56 +72,57 @@ namespace MessagePack.Resolvers { typeof(global::ComplexModel), 18 }, { typeof(global::GlobalMan), 19 }, { typeof(global::Message), 20 }, - { typeof(global::PerfBenchmarkDotNet.StringKeySerializerTarget), 21 }, - { typeof(global::QuestMessageBody), 22 }, - { typeof(global::SharedData.ArrayOptimizeClass), 23 }, - { typeof(global::SharedData.BarClass), 24 }, - { typeof(global::SharedData.Callback1), 25 }, - { typeof(global::SharedData.Callback1_2), 26 }, - { typeof(global::SharedData.Callback2), 27 }, - { typeof(global::SharedData.Callback2_2), 28 }, - { typeof(global::SharedData.DefaultValueIntKeyClassWithExplicitConstructor), 29 }, - { typeof(global::SharedData.DefaultValueIntKeyClassWithoutExplicitConstructor), 30 }, - { typeof(global::SharedData.DefaultValueIntKeyStructWithExplicitConstructor), 31 }, - { typeof(global::SharedData.DefaultValueStringKeyClassWithExplicitConstructor), 32 }, - { typeof(global::SharedData.DefaultValueStringKeyClassWithoutExplicitConstructor), 33 }, - { typeof(global::SharedData.DefaultValueStringKeyStructWithExplicitConstructor), 34 }, - { typeof(global::SharedData.Empty1), 35 }, - { typeof(global::SharedData.Empty2), 36 }, - { typeof(global::SharedData.EmptyClass), 37 }, - { typeof(global::SharedData.EmptyStruct), 38 }, - { typeof(global::SharedData.FirstSimpleData), 39 }, - { typeof(global::SharedData.FooClass), 40 }, - { typeof(global::SharedData.HolderV0), 41 }, - { typeof(global::SharedData.HolderV1), 42 }, - { typeof(global::SharedData.HolderV2), 43 }, - { typeof(global::SharedData.MyClass), 44 }, - { typeof(global::SharedData.MySubUnion1), 45 }, - { typeof(global::SharedData.MySubUnion2), 46 }, - { typeof(global::SharedData.MySubUnion3), 47 }, - { typeof(global::SharedData.MySubUnion4), 48 }, - { typeof(global::SharedData.NestParent.NestContract), 49 }, - { typeof(global::SharedData.NonEmpty1), 50 }, - { typeof(global::SharedData.NonEmpty2), 51 }, - { typeof(global::SharedData.SimpleIntKeyData), 52 }, - { typeof(global::SharedData.SimpleStringKeyData), 53 }, - { typeof(global::SharedData.SimpleStructIntKeyData), 54 }, - { typeof(global::SharedData.SimpleStructStringKeyData), 55 }, - { typeof(global::SharedData.SubUnionType1), 56 }, - { typeof(global::SharedData.SubUnionType2), 57 }, - { typeof(global::SharedData.UnVersionBlockTest), 58 }, - { typeof(global::SharedData.Vector2), 59 }, - { typeof(global::SharedData.Vector3Like), 60 }, - { typeof(global::SharedData.VectorLike2), 61 }, - { typeof(global::SharedData.Version0), 62 }, - { typeof(global::SharedData.Version1), 63 }, - { typeof(global::SharedData.Version2), 64 }, - { typeof(global::SharedData.VersionBlockTest), 65 }, - { typeof(global::SharedData.VersioningUnion), 66 }, - { typeof(global::SharedData.WithIndexer), 67 }, - { typeof(global::SimpleModel), 68 }, - { typeof(global::StampMessageBody), 69 }, - { typeof(global::TextMessageBody), 70 }, + { typeof(global::MessagePackFormatterFieldUser), 21 }, + { typeof(global::PerfBenchmarkDotNet.StringKeySerializerTarget), 22 }, + { typeof(global::QuestMessageBody), 23 }, + { typeof(global::SharedData.ArrayOptimizeClass), 24 }, + { typeof(global::SharedData.BarClass), 25 }, + { typeof(global::SharedData.Callback1), 26 }, + { typeof(global::SharedData.Callback1_2), 27 }, + { typeof(global::SharedData.Callback2), 28 }, + { typeof(global::SharedData.Callback2_2), 29 }, + { typeof(global::SharedData.DefaultValueIntKeyClassWithExplicitConstructor), 30 }, + { typeof(global::SharedData.DefaultValueIntKeyClassWithoutExplicitConstructor), 31 }, + { typeof(global::SharedData.DefaultValueIntKeyStructWithExplicitConstructor), 32 }, + { typeof(global::SharedData.DefaultValueStringKeyClassWithExplicitConstructor), 33 }, + { typeof(global::SharedData.DefaultValueStringKeyClassWithoutExplicitConstructor), 34 }, + { typeof(global::SharedData.DefaultValueStringKeyStructWithExplicitConstructor), 35 }, + { typeof(global::SharedData.Empty1), 36 }, + { typeof(global::SharedData.Empty2), 37 }, + { typeof(global::SharedData.EmptyClass), 38 }, + { typeof(global::SharedData.EmptyStruct), 39 }, + { typeof(global::SharedData.FirstSimpleData), 40 }, + { typeof(global::SharedData.FooClass), 41 }, + { typeof(global::SharedData.HolderV0), 42 }, + { typeof(global::SharedData.HolderV1), 43 }, + { typeof(global::SharedData.HolderV2), 44 }, + { typeof(global::SharedData.MyClass), 45 }, + { typeof(global::SharedData.MySubUnion1), 46 }, + { typeof(global::SharedData.MySubUnion2), 47 }, + { typeof(global::SharedData.MySubUnion3), 48 }, + { typeof(global::SharedData.MySubUnion4), 49 }, + { typeof(global::SharedData.NestParent.NestContract), 50 }, + { typeof(global::SharedData.NonEmpty1), 51 }, + { typeof(global::SharedData.NonEmpty2), 52 }, + { typeof(global::SharedData.SimpleIntKeyData), 53 }, + { typeof(global::SharedData.SimpleStringKeyData), 54 }, + { typeof(global::SharedData.SimpleStructIntKeyData), 55 }, + { typeof(global::SharedData.SimpleStructStringKeyData), 56 }, + { typeof(global::SharedData.SubUnionType1), 57 }, + { typeof(global::SharedData.SubUnionType2), 58 }, + { typeof(global::SharedData.UnVersionBlockTest), 59 }, + { typeof(global::SharedData.Vector2), 60 }, + { typeof(global::SharedData.Vector3Like), 61 }, + { typeof(global::SharedData.VectorLike2), 62 }, + { typeof(global::SharedData.Version0), 63 }, + { typeof(global::SharedData.Version1), 64 }, + { typeof(global::SharedData.Version2), 65 }, + { typeof(global::SharedData.VersionBlockTest), 66 }, + { typeof(global::SharedData.VersioningUnion), 67 }, + { typeof(global::SharedData.WithIndexer), 68 }, + { typeof(global::SimpleModel), 69 }, + { typeof(global::StampMessageBody), 70 }, + { typeof(global::TextMessageBody), 71 }, }; } @@ -156,56 +157,57 @@ namespace MessagePack.Resolvers case 18: return new MessagePack.Formatters.ComplexModelFormatter(); case 19: return new MessagePack.Formatters.GlobalManFormatter(); case 20: return new MessagePack.Formatters.MessageFormatter(); - case 21: return new MessagePack.Formatters.PerfBenchmarkDotNet.StringKeySerializerTargetFormatter(); - case 22: return new MessagePack.Formatters.QuestMessageBodyFormatter(); - case 23: return new MessagePack.Formatters.SharedData.ArrayOptimizeClassFormatter(); - case 24: return new MessagePack.Formatters.SharedData.BarClassFormatter(); - case 25: return new MessagePack.Formatters.SharedData.Callback1Formatter(); - case 26: return new MessagePack.Formatters.SharedData.Callback1_2Formatter(); - case 27: return new MessagePack.Formatters.SharedData.Callback2Formatter(); - case 28: return new MessagePack.Formatters.SharedData.Callback2_2Formatter(); - case 29: return new MessagePack.Formatters.SharedData.DefaultValueIntKeyClassWithExplicitConstructorFormatter(); - case 30: return new MessagePack.Formatters.SharedData.DefaultValueIntKeyClassWithoutExplicitConstructorFormatter(); - case 31: return new MessagePack.Formatters.SharedData.DefaultValueIntKeyStructWithExplicitConstructorFormatter(); - case 32: return new MessagePack.Formatters.SharedData.DefaultValueStringKeyClassWithExplicitConstructorFormatter(); - case 33: return new MessagePack.Formatters.SharedData.DefaultValueStringKeyClassWithoutExplicitConstructorFormatter(); - case 34: return new MessagePack.Formatters.SharedData.DefaultValueStringKeyStructWithExplicitConstructorFormatter(); - case 35: return new MessagePack.Formatters.SharedData.Empty1Formatter(); - case 36: return new MessagePack.Formatters.SharedData.Empty2Formatter(); - case 37: return new MessagePack.Formatters.SharedData.EmptyClassFormatter(); - case 38: return new MessagePack.Formatters.SharedData.EmptyStructFormatter(); - case 39: return new MessagePack.Formatters.SharedData.FirstSimpleDataFormatter(); - case 40: return new MessagePack.Formatters.SharedData.FooClassFormatter(); - case 41: return new MessagePack.Formatters.SharedData.HolderV0Formatter(); - case 42: return new MessagePack.Formatters.SharedData.HolderV1Formatter(); - case 43: return new MessagePack.Formatters.SharedData.HolderV2Formatter(); - case 44: return new MessagePack.Formatters.SharedData.MyClassFormatter(); - case 45: return new MessagePack.Formatters.SharedData.MySubUnion1Formatter(); - case 46: return new MessagePack.Formatters.SharedData.MySubUnion2Formatter(); - case 47: return new MessagePack.Formatters.SharedData.MySubUnion3Formatter(); - case 48: return new MessagePack.Formatters.SharedData.MySubUnion4Formatter(); - case 49: return new MessagePack.Formatters.SharedData.NestParent_NestContractFormatter(); - case 50: return new MessagePack.Formatters.SharedData.NonEmpty1Formatter(); - case 51: return new MessagePack.Formatters.SharedData.NonEmpty2Formatter(); - case 52: return new MessagePack.Formatters.SharedData.SimpleIntKeyDataFormatter(); - case 53: return new MessagePack.Formatters.SharedData.SimpleStringKeyDataFormatter(); - case 54: return new MessagePack.Formatters.SharedData.SimpleStructIntKeyDataFormatter(); - case 55: return new MessagePack.Formatters.SharedData.SimpleStructStringKeyDataFormatter(); - case 56: return new MessagePack.Formatters.SharedData.SubUnionType1Formatter(); - case 57: return new MessagePack.Formatters.SharedData.SubUnionType2Formatter(); - case 58: return new MessagePack.Formatters.SharedData.UnVersionBlockTestFormatter(); - case 59: return new MessagePack.Formatters.SharedData.Vector2Formatter(); - case 60: return new MessagePack.Formatters.SharedData.Vector3LikeFormatter(); - case 61: return new MessagePack.Formatters.SharedData.VectorLike2Formatter(); - case 62: return new MessagePack.Formatters.SharedData.Version0Formatter(); - case 63: return new MessagePack.Formatters.SharedData.Version1Formatter(); - case 64: return new MessagePack.Formatters.SharedData.Version2Formatter(); - case 65: return new MessagePack.Formatters.SharedData.VersionBlockTestFormatter(); - case 66: return new MessagePack.Formatters.SharedData.VersioningUnionFormatter(); - case 67: return new MessagePack.Formatters.SharedData.WithIndexerFormatter(); - case 68: return new MessagePack.Formatters.SimpleModelFormatter(); - case 69: return new MessagePack.Formatters.StampMessageBodyFormatter(); - case 70: return new MessagePack.Formatters.TextMessageBodyFormatter(); + case 21: return new MessagePack.Formatters.MessagePackFormatterFieldUserFormatter(); + case 22: return new MessagePack.Formatters.PerfBenchmarkDotNet.StringKeySerializerTargetFormatter(); + case 23: return new MessagePack.Formatters.QuestMessageBodyFormatter(); + case 24: return new MessagePack.Formatters.SharedData.ArrayOptimizeClassFormatter(); + case 25: return new MessagePack.Formatters.SharedData.BarClassFormatter(); + case 26: return new MessagePack.Formatters.SharedData.Callback1Formatter(); + case 27: return new MessagePack.Formatters.SharedData.Callback1_2Formatter(); + case 28: return new MessagePack.Formatters.SharedData.Callback2Formatter(); + case 29: return new MessagePack.Formatters.SharedData.Callback2_2Formatter(); + case 30: return new MessagePack.Formatters.SharedData.DefaultValueIntKeyClassWithExplicitConstructorFormatter(); + case 31: return new MessagePack.Formatters.SharedData.DefaultValueIntKeyClassWithoutExplicitConstructorFormatter(); + case 32: return new MessagePack.Formatters.SharedData.DefaultValueIntKeyStructWithExplicitConstructorFormatter(); + case 33: return new MessagePack.Formatters.SharedData.DefaultValueStringKeyClassWithExplicitConstructorFormatter(); + case 34: return new MessagePack.Formatters.SharedData.DefaultValueStringKeyClassWithoutExplicitConstructorFormatter(); + case 35: return new MessagePack.Formatters.SharedData.DefaultValueStringKeyStructWithExplicitConstructorFormatter(); + case 36: return new MessagePack.Formatters.SharedData.Empty1Formatter(); + case 37: return new MessagePack.Formatters.SharedData.Empty2Formatter(); + case 38: return new MessagePack.Formatters.SharedData.EmptyClassFormatter(); + case 39: return new MessagePack.Formatters.SharedData.EmptyStructFormatter(); + case 40: return new MessagePack.Formatters.SharedData.FirstSimpleDataFormatter(); + case 41: return new MessagePack.Formatters.SharedData.FooClassFormatter(); + case 42: return new MessagePack.Formatters.SharedData.HolderV0Formatter(); + case 43: return new MessagePack.Formatters.SharedData.HolderV1Formatter(); + case 44: return new MessagePack.Formatters.SharedData.HolderV2Formatter(); + case 45: return new MessagePack.Formatters.SharedData.MyClassFormatter(); + case 46: return new MessagePack.Formatters.SharedData.MySubUnion1Formatter(); + case 47: return new MessagePack.Formatters.SharedData.MySubUnion2Formatter(); + case 48: return new MessagePack.Formatters.SharedData.MySubUnion3Formatter(); + case 49: return new MessagePack.Formatters.SharedData.MySubUnion4Formatter(); + case 50: return new MessagePack.Formatters.SharedData.NestParent_NestContractFormatter(); + case 51: return new MessagePack.Formatters.SharedData.NonEmpty1Formatter(); + case 52: return new MessagePack.Formatters.SharedData.NonEmpty2Formatter(); + case 53: return new MessagePack.Formatters.SharedData.SimpleIntKeyDataFormatter(); + case 54: return new MessagePack.Formatters.SharedData.SimpleStringKeyDataFormatter(); + case 55: return new MessagePack.Formatters.SharedData.SimpleStructIntKeyDataFormatter(); + case 56: return new MessagePack.Formatters.SharedData.SimpleStructStringKeyDataFormatter(); + case 57: return new MessagePack.Formatters.SharedData.SubUnionType1Formatter(); + case 58: return new MessagePack.Formatters.SharedData.SubUnionType2Formatter(); + case 59: return new MessagePack.Formatters.SharedData.UnVersionBlockTestFormatter(); + case 60: return new MessagePack.Formatters.SharedData.Vector2Formatter(); + case 61: return new MessagePack.Formatters.SharedData.Vector3LikeFormatter(); + case 62: return new MessagePack.Formatters.SharedData.VectorLike2Formatter(); + case 63: return new MessagePack.Formatters.SharedData.Version0Formatter(); + case 64: return new MessagePack.Formatters.SharedData.Version1Formatter(); + case 65: return new MessagePack.Formatters.SharedData.Version2Formatter(); + case 66: return new MessagePack.Formatters.SharedData.VersionBlockTestFormatter(); + case 67: return new MessagePack.Formatters.SharedData.VersioningUnionFormatter(); + case 68: return new MessagePack.Formatters.SharedData.WithIndexerFormatter(); + case 69: return new MessagePack.Formatters.SimpleModelFormatter(); + case 70: return new MessagePack.Formatters.StampMessageBodyFormatter(); + case 71: return new MessagePack.Formatters.TextMessageBodyFormatter(); default: return null; } } @@ -1173,6 +1175,51 @@ namespace MessagePack.Formatters } } + public sealed class MessagePackFormatterFieldUserFormatter : global::MessagePack.Formatters.IMessagePackFormatter<global::MessagePackFormatterFieldUser> + { + private readonly global::MessagePack.Formatters.NativeDateTimeFormatter __TimestampCustomFormatter__ = new global::MessagePack.Formatters.NativeDateTimeFormatter(); + + public void Serialize(ref global::MessagePack.MessagePackWriter writer, global::MessagePackFormatterFieldUser value, global::MessagePack.MessagePackSerializerOptions options) + { + if (value == null) + { + writer.WriteNil(); + return; + } + + writer.WriteArrayHeader(1); + this.__TimestampCustomFormatter__.Serialize(ref writer, value.Timestamp, options); + } + + public global::MessagePackFormatterFieldUser Deserialize(ref global::MessagePack.MessagePackReader reader, global::MessagePack.MessagePackSerializerOptions options) + { + if (reader.TryReadNil()) + { + return null; + } + + options.Security.DepthStep(ref reader); + var length = reader.ReadArrayHeader(); + var ____result = new global::MessagePackFormatterFieldUser(); + + for (int i = 0; i < length; i++) + { + switch (i) + { + case 0: + ____result.Timestamp = this.__TimestampCustomFormatter__.Deserialize(ref reader, options); + break; + default: + reader.Skip(); + break; + } + } + + reader.Depth--; + return ____result; + } + } + public sealed class QuestMessageBodyFormatter : global::MessagePack.Formatters.IMessagePackFormatter<global::QuestMessageBody> { |