示例#1
0
        public void StringMemberInterning()
        {
            ClassOfStrings before = new ClassOfStrings {
                InternedString = "abc", OrdinaryString = "def"
            };
            ClassOfStrings after1 = MessagePackSerializer.Deserialize <ClassOfStrings>(MessagePackSerializer.Serialize(before, MessagePackSerializerOptions.Standard), MessagePackSerializerOptions.Standard);
            ClassOfStrings after2 = MessagePackSerializer.Deserialize <ClassOfStrings>(MessagePackSerializer.Serialize(before, MessagePackSerializerOptions.Standard), MessagePackSerializerOptions.Standard);

            Assert.Equal(after1.InternedString, after2.InternedString);
            Assert.Equal(after1.OrdinaryString, after2.OrdinaryString);

            Assert.Same(after1.InternedString, after2.InternedString);
            Assert.NotSame(after1.OrdinaryString, after2.OrdinaryString);
        }
示例#2
0
        public void StringMemberInterning_CustomResolver()
        {
            var options = MessagePackSerializerOptions.Standard.WithResolver(
                CompositeResolver.Create(
                    new IMessagePackFormatter[] { new StringInterningFormatter() },
                    new IFormatterResolver[] { StandardResolver.Instance }));

            ClassOfStrings before = new ClassOfStrings {
                InternedString = "abc", OrdinaryString = "def"
            };
            ClassOfStrings after1 = MessagePackSerializer.Deserialize <ClassOfStrings>(MessagePackSerializer.Serialize(before, options), options);
            ClassOfStrings after2 = MessagePackSerializer.Deserialize <ClassOfStrings>(MessagePackSerializer.Serialize(before, options), options);

            Assert.Equal(after1.InternedString, after2.InternedString);
            Assert.Equal(after1.OrdinaryString, after2.OrdinaryString);

            Assert.Same(after1.InternedString, after2.InternedString);
            Assert.Same(after1.OrdinaryString, after2.OrdinaryString);
        }