示例#1
0
        public void WriteXml(XmlWriter xml)
        {
            if (xml == null)
            {
                throw new ArgumentNullException("xml");
            }

            XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();

            namespaces.Add("", "");

            foreach (var kvp in this)
            {
                var key = kvp.Value.GetType().Name;
                if (Types.ContainsKey(key))
                {
                    TypeValue valueType = Types[key];
                    valueType.Serialize(xml, kvp.Value, namespaces);
                }
                else
                {
                    throw new KeyNotFoundException("No serializer key for the '" + key + "' type.");
                }
            }
        }
示例#2
0
        public void WhenSerializeAndDefaultStrategy()
        {
            var req1 = new SecretAgent {
                Id = "007", Name = "Bond. James Bond"
            };
            var val1 = new TypeValue <SecretAgent>(req1, null);
            var res1 = val1.Serialize().Value;

            res1.Should().NotBeNull();
            res1.Should().Be("{\"Name\":\"Bond. James Bond\",\"Id\":\"007\"}");
        }
示例#3
0
        public void WhenSerializeAndSuppliedStrategy()
        {
            var mockRequest = new SecretAgent {
                Id = "007", Name = "Bond. James Bond"
            };
            var mockResponse = "{\"Name\":\"Bond. James Bond\",\"Id\":\"007\"}";

            var mockStrategy = new Mock <ISerializationStrategy>();

            mockStrategy.Setup(m => m.Serialize <SecretAgent>(mockRequest)).Returns(mockResponse);

            var opt = new SerializationOptions
            {
                Serialization = mockStrategy.Object
            };

            var req1 = mockRequest;
            var val1 = new TypeValue <SecretAgent>(req1, opt);
            var res1 = val1.Serialize().Value;

            res1.Should().NotBeNull();
            res1.Should().Be(mockResponse);
            mockStrategy.Verify(m => m.Serialize(req1), Times.Once);
        }