예제 #1
0
        public void CanSerializeDeserialize()
        {
            PluginFilter toSerialize = PluginFilter.Create.IsNamed("some name").Implements(typeof(string)).Or(PluginFilter.Create.DerivesFrom(typeof(int)).IsNamed("a name").HasVersion("1.0"));
            var          knownTypes  = new Type[] { typeof(PluginFilter.FilterOperation), typeof(PluginFilter[]) };
            PluginFilter deserialized;

            using (var memstream = new MemoryStream())
            {
                XmlTextWriter writer     = new XmlTextWriter(memstream, Encoding.UTF8);
                var           serializer = new DataContractSerializer(toSerialize.GetType(), knownTypes);
                serializer.WriteObject(writer, toSerialize);
                writer.Flush();

                memstream.Seek(0, SeekOrigin.Begin);
                XmlTextReader reader = new XmlTextReader(memstream);
                deserialized = serializer.ReadObject(reader) as PluginFilter;
            }

            Assert.IsTrue(deserialized.Equals(toSerialize));
        }