示例#1
0
        public void HiddenPropertiesWithCustomValuesAndDefaults()
        {
            ICSScriptSerializer _;

            CSScriptSerializer.Serializers.TryRemove(typeof(HiddenDerived), out _);
            CSScriptSerializer.Serializers[typeof(HiddenDerived)] =
                new PropertyCSScriptSerializer <HiddenDerived>(
                    new Dictionary <string, Func <HiddenDerived, object, bool> >
            {
                { "Property", (o, v) => (int)v != 2 }
            },
                    null,
                    new Dictionary <string, Func <HiddenDerived, object> >
            {
                { "Property", o => o.Property + 1 }
            },
                    new Dictionary <string, Func <HiddenDerived, object, bool> >
            {
                { "HiddenBase.Property", (o, v) => (string)v != "11" }
            },
                    new Dictionary <string, Func <HiddenDerived, object> >
            {
                { "HiddenBase.Property", o => ((HiddenBase)o).Property + "1" }
            });

            var input = new HiddenDerived {
                Property = 1
            };

            ((HiddenBase)input).Property = "1";

            var script = CSScriptSerializer.Serialize(input);
            var output = CSScriptSerializer.Deserialize <HiddenDerived>(script);

            Assert.Equal(0, output.Property);
            Assert.Null(((HiddenBase)output).Property);

            input = new HiddenDerived {
                Property = 2
            };
            ((HiddenBase)input).Property = "2";

            script = CSScriptSerializer.Serialize(input);
            output = CSScriptSerializer.Deserialize <HiddenDerived>(script);

            Assert.Equal(3, output.Property);
            Assert.Equal("21", ((HiddenBase)output).Property);

            CSScriptSerializer.Serializers.TryRemove(typeof(HiddenDerived), out _);
        }
示例#2
0
        public void HiddenProperties()
        {
            var input = new HiddenDerived {
                Property = 2
            };

            ((HiddenBase)input).Property = "1";

            var script = CSScriptSerializer.Serialize(input);
            var output = CSScriptSerializer.Deserialize <HiddenDerived>(script);

            Assert.Equal(input.Property, output.Property);
            Assert.Equal(((HiddenBase)input).Property, ((HiddenBase)output).Property);
        }