Example #1
0
        public void TestGraphSerializationClass1()
        {
            using (FileStream fileStream = new FileStream("Class1Graph.txt", FileMode.Create))
            {
                serializer.Serialize(fileStream, _class1);
            }

            using (FileStream fileStream = new FileStream("Class1Graph.txt", FileMode.Open))
            {
                _class1Deserialized = (Class1)serializer.Deserialize(fileStream);
            }

            Assert.IsNotNull(_class1Deserialized);
            Assert.AreNotSame(_class1, _class1Deserialized);

            Assert.AreEqual(_class1.TextData, _class1Deserialized.TextData);
            Assert.AreEqual(_class1.DateTimeData, _class1Deserialized.DateTimeData);
            Assert.AreEqual(_class1.DoubleData, _class1Deserialized.DoubleData);

            Assert.AreEqual(_class1.Class2.TextData, _class1Deserialized.Class2.TextData);
            Assert.AreEqual(_class1.Class2.DateTimeData, _class1Deserialized.Class2.DateTimeData);

            Assert.AreEqual(_class1.Class3.TextData, _class1Deserialized.Class3.TextData);
            Assert.AreEqual(_class1.Class3.DateTimeData, _class1Deserialized.Class3.DateTimeData);
        }
Example #2
0
        static void Main(string[] args)
        {
            MySerializer ser = new MySerializer();

            using (FileStream file = File.OpenRead("../../../Tools/nwind.proto.bin"))
            {
                DatabaseCompat db = (DatabaseCompat)ser.Deserialize(file, null, typeof(DatabaseCompat));
                Console.WriteLine("Orders: {0}", db.Orders.Count);
                int sum = 0;
                foreach (OrderCompat order in db.Orders)
                {
                    sum += order.Lines == null ? 0 : order.Lines.Count;
                }
                Console.WriteLine("Lines: {0}", sum);

                using (MemoryStream ms = new MemoryStream())
                {
                    ser.Serialize(ms, db);
                    Console.WriteLine("Bytes: {0}", ms.Length);
                }
            }

//			ArrayList names = new ArrayList();
//			foreach(FieldInfo field in typeof(OpCodes).GetFields())
//			{
//				if(field.IsStatic) names.Add(field.Name);
//			}
//			names.Sort();
//			foreach(string name in names) Console.WriteLine(name);
        }
Example #3
0
        public virtual void Save()
        {
#if DEBUG
            MyTraceSource.TraceEvent(TraceEventType.Information, new StringBuilder(40).Append("[").Append(FileName).Append("] ファイル保存開始").ToString());
#endif
            List <string> list;
            lock (lockobject_)
                list = favoriteStreamClassList_.Select(x => x.Owner).ToList();

            while (true)
            {
                try
                {
                    MySerializer.Serialize <List <string> >(list, FilePath);
                    IsChanged = false;
                }
                catch (DirectoryNotFoundException)
                {
#if DEBUG
                    MyTraceSource.TraceEvent(TraceEventType.Error, new StringBuilder(40).Append("[").Append(FileName).Append("] Favoriteフォルダが見つかりません").ToString());
#endif
                    Directory.CreateDirectory("favorite");
                    continue;
                }
                catch (Exception ex)
                {
                    MyTraceSource.TraceEvent(TraceEventType.Error, ex);
                }
                break;
            }
#if DEBUG
            MyTraceSource.TraceEvent(TraceEventType.Information, new StringBuilder(40).Append("[").Append(FileName).Append("] ファイル保存完了").ToString());
#endif
        }
Example #4
0
        public void CheckDeserializedNullReference()
        {
            if (File.Exists(path))
            {
                File.Delete(path);
            }

            Class4 class4 = new Class4("Deskorolka", true, 4.9d);

            MySerializer mySerializer = new MySerializer();

            using (FileStream fsSerialize = new FileStream(path, FileMode.Create))
            {
                mySerializer.Serialize(fsSerialize, class4);
            }

            Class4 class4Deserialized;

            using (FileStream fsDeserialize = new FileStream(path, FileMode.Open))
            {
                class4Deserialized = (Class4)mySerializer.Deserialize(fsDeserialize);
            }

            Assert.AreNotSame(null, class4Deserialized);
            Assert.AreSame(null, class4Deserialized.class4);
        }
Example #5
0
		static void Main(string[] args)
		{
			MySerializer ser = new MySerializer();
			using(FileStream file = File.OpenRead("../../../Tools/nwind.proto.bin"))
			{
				DatabaseCompat db = (DatabaseCompat)ser.Deserialize(file, null, typeof(DatabaseCompat));
				Console.WriteLine("Orders: {0}", db.Orders.Count);
				int sum = 0;
				foreach(OrderCompat order in db.Orders)
				{
					sum += order.Lines == null ? 0 : order.Lines.Count;
				}
				Console.WriteLine("Lines: {0}", sum);

				using(MemoryStream ms = new MemoryStream())
				{
					ser.Serialize(ms, db);
					Console.WriteLine("Bytes: {0}", ms.Length);
				}
			}
			
//			ArrayList names = new ArrayList();
//			foreach(FieldInfo field in typeof(OpCodes).GetFields())
//			{
//				if(field.IsStatic) names.Add(field.Name);
//			}
//			names.Sort();
//			foreach(string name in names) Console.WriteLine(name);
		}
Example #6
0
        public void CheckDeserializedClass4Values()
        {
            if (File.Exists(path))
            {
                File.Delete(path);
            }

            Class4 class4 = new Class4("Deskorolka", true, 4.9d);

            class4.class4 = class4;

            MySerializer mySerializer = new MySerializer();

            using (FileStream fsSerialize = new FileStream(path, FileMode.Create))
            {
                mySerializer.Serialize(fsSerialize, class4);
            }

            Class4 class4Deserialized;

            using (FileStream fsDeserialize = new FileStream(path, FileMode.Open))
            {
                class4Deserialized = (Class4)mySerializer.Deserialize(fsDeserialize);
            }

            Assert.AreNotSame(null, class4Deserialized);
            Assert.AreNotSame(class4, class4Deserialized);

            Assert.AreEqual(class4.Text, class4Deserialized.Text);
            Assert.AreEqual(class4.Number, class4Deserialized.Number);
            Assert.AreEqual(class4.Boolean, class4Deserialized.Boolean);
        }
        public void WhenSerializingUnknownTypeItThrowsInvalidOperation()
        {
            AbstractSerializer.RegisterKnownType(typeof(object));

              AbstractSerializer s = new MySerializer();
              AssertThrows<InvalidOperationException>(() => s.Serialize(new { }));
        }
Example #8
0
        public void WhenSerializingUnknownTypeItThrowsInvalidOperation()
        {
            AbstractSerializer.RegisterKnownType(typeof(object));

            AbstractSerializer s = new MySerializer();

            AssertThrows <InvalidOperationException>(() => s.Serialize(new { }));
        }
Example #9
0
        // ------------
        // Constructors
        // ------------
        public RestaurantsInfo()
        {
            _myList = new List <RestaurantInfo>();
            GetSerializedData();
            MySerializer.Serialize(ref _myList);

            OutputToRRDb();
        }
        public void CheckStringReferencesTest()
        {
            if (File.Exists(path))
            {
                File.Delete(path);
            }

            string stringReference = "StringReference";
            Class1 class1          = new Class1(stringReference, DateTime.Now, 1.1d);
            Class2 class2          = new Class2(stringReference, DateTime.Now, 2.2d);
            Class3 class3          = new Class3(stringReference, DateTime.Now, 3.3d);

            class1.Class2 = class2;
            class1.Class3 = class3;

            class2.Class1 = class1;
            class2.Class3 = class3;

            class3.Class1 = class1;
            class3.Class2 = class2;

            MySerializer mySerializer = new MySerializer();

            using (FileStream fsSerialize = new FileStream(path, FileMode.Create))
            {
                mySerializer.Serialize(fsSerialize, class1);
            }

            Class1 class1Deserialized;

            using (FileStream fsDeserialize = new FileStream(path, FileMode.Open))
            {
                class1Deserialized = (Class1)mySerializer.Deserialize(fsDeserialize);
            }

            Assert.AreNotSame(class1, class1Deserialized);
            Assert.AreNotSame(null, class1Deserialized.Class2);
            Assert.AreNotSame(null, class1Deserialized.Class3);

            Assert.AreEqual(class3.Number, class1Deserialized.Class3.Number);
            Assert.AreEqual(class3.DateTime.ToString(), class1Deserialized.Class3.DateTime.ToString());

            Assert.AreEqual(class2.Number, class1Deserialized.Class2.Number);
            Assert.AreEqual(class2.DateTime.ToString(), class1Deserialized.Class2.DateTime.ToString());

            Assert.AreEqual(class1.Number, class1Deserialized.Number);
            Assert.AreEqual(class1.DateTime.ToString(), class1Deserialized.DateTime.ToString());

            Assert.IsFalse(object.ReferenceEquals(stringReference, class1Deserialized.Text));
            Assert.IsTrue(object.ReferenceEquals(class1Deserialized.Text, class1Deserialized.Class2.Text));
            Assert.IsTrue(object.ReferenceEquals(class1Deserialized.Text, class1Deserialized.Class3.Text));
            Assert.IsTrue(object.ReferenceEquals(class1Deserialized.Class2.Text, class1Deserialized.Class3.Text));
        }
        public void CheckDeserializedClass3Values()
        {
            if (File.Exists(path))
            {
                File.Delete(path);
            }

            Class1 class1 = new Class1("KLASA1", DateTime.Now, 1.1d);
            Class2 class2 = new Class2("KLASA2", DateTime.Now, 2.2d);
            Class3 class3 = new Class3("KLASA3", DateTime.Now, 3.3d);

            class1.Class2 = class2;
            class1.Class3 = class3;

            class2.Class1 = class1;
            class2.Class3 = class3;

            class3.Class1 = class1;
            class3.Class2 = class2;

            MySerializer mySerializer = new MySerializer();

            using (FileStream fsSerialize = new FileStream(path, FileMode.Create))
            {
                mySerializer.Serialize(fsSerialize, class3);
            }

            Class3 class3Deserialized;

            using (FileStream fsDeserialize = new FileStream(path, FileMode.Open))
            {
                class3Deserialized = (Class3)mySerializer.Deserialize(fsDeserialize);
            }

            Assert.AreNotSame(class2, class3Deserialized);
            Assert.AreNotSame(null, class3Deserialized.Class1);
            Assert.AreNotSame(null, class3Deserialized.Class2);

            Assert.AreEqual(class1.Text, class3Deserialized.Class1.Text);
            Assert.AreEqual(class1.Number, class3Deserialized.Class1.Number);
            Assert.AreEqual(class1.DateTime.ToString(), class3Deserialized.Class1.DateTime.ToString());

            Assert.AreEqual(class2.Text, class3Deserialized.Class2.Text);
            Assert.AreEqual(class2.Number, class3Deserialized.Class2.Number);
            Assert.AreEqual(class2.DateTime.ToString(), class3Deserialized.Class2.DateTime.ToString());

            Assert.AreEqual(class3.Text, class3Deserialized.Text);
            Assert.AreEqual(class3.Number, class3Deserialized.Number);
            Assert.AreEqual(class3.DateTime.ToString(), class3Deserialized.DateTime.ToString());
        }
        public void CheckDeserializedClass1References()
        {
            if (File.Exists(path))
            {
                File.Delete(path);
            }

            Class1 class1 = new Class1("KLASA1", DateTime.Now, 1.1d);
            Class2 class2 = new Class2("KLASA2", DateTime.Now, 2.2d);
            Class3 class3 = new Class3("KLASA3", DateTime.Now, 3.3d);

            class1.Class2 = class2;
            class1.Class3 = class3;

            class2.Class1 = class1;
            class2.Class3 = class3;

            class3.Class1 = class1;
            class3.Class2 = class2;

            MySerializer mySerializer = new MySerializer();

            using (FileStream fsSerialize = new FileStream(path, FileMode.Create))
            {
                mySerializer.Serialize(fsSerialize, class1);
            }

            Class1 class1Deserialized;

            using (FileStream fsDeserialize = new FileStream(path, FileMode.Open))
            {
                class1Deserialized = (Class1)mySerializer.Deserialize(fsDeserialize);
            }

            Assert.AreNotSame(class1, class1Deserialized);
            Assert.AreNotSame(null, class1Deserialized.Class2);
            Assert.AreNotSame(null, class1Deserialized.Class3);
            Assert.AreNotSame(null, class1Deserialized.Class2.Class1);
            Assert.AreNotSame(null, class1Deserialized.Class2.Class3);
            Assert.AreNotSame(null, class1Deserialized.Class3.Class2);
            Assert.AreNotSame(null, class1Deserialized.Class3.Class1);

            Assert.AreSame(class1Deserialized, class1Deserialized.Class2.Class1);
            Assert.AreSame(class1Deserialized, class1Deserialized.Class3.Class1);
            Assert.AreSame(class1Deserialized.Class2, class1Deserialized.Class3.Class2);
            Assert.AreSame(class1Deserialized.Class3, class1Deserialized.Class2.Class3);
        }
Example #13
0
    void protobuf_ToSerialize()
    {
                #if PROTOBUF
        Address add = new Address();
        add.Line1 = "Perking";
        add.Line2 = "LaMaTemper";

        Person per = new Person();
        per.Address = add;
        per.Id      = 14;
        per.Name    = "allen";

        using (FileStream fs = File.Open(DeviceInfo.PersisitFullPath("proto"), FileMode.Create)) {
            var ser = new MySerializer();
            ser.Serialize(fs, per);
        }
                #endif
    }
Example #14
0
        static void Main(string[] args)
        {
            string      filePath, xsdFilePath, xsltFilePath, htmlFilePath;
            Class1      class1Deserialized      = null;
            DataContext dataContextDeserialized = null;
            Katalog     katalogDeserialized     = null;

            Console.WriteLine("         Zadanie 2 - Serializacja        \r");
            Console.WriteLine("-----------------------------------------\n");
            Console.WriteLine("Choose an option from the following list:");
            Console.WriteLine("Custom - Graph");
            Console.WriteLine("\t1 - Graph custom serialization");
            Console.WriteLine("\t2 - Graph custom deserialization");
            Console.WriteLine("\t3 - Show deserialized Graph object");
            Console.WriteLine("JSON - Graph");
            Console.WriteLine("\t4 - Graph JSON serialization");
            Console.WriteLine("\t5 - Graph JSON deserialization");
            Console.WriteLine("\t6 - Show deserialized JSON Graph object");
            Console.WriteLine("JSON - Zadanie1");
            Console.WriteLine("\t7 - DataContext JSON serialization");
            Console.WriteLine("\t8 - DataContext JSON deserialization");
            Console.WriteLine("\t9 - Show deserialized JSON object");
            Console.WriteLine("XML - Katalog");
            Console.WriteLine("\t10 - Katalog XML serialization");
            Console.WriteLine("\t11 - Katalog XML deserialization");
            Console.WriteLine("\t12 - Show deserialized Katalog XML object");
            Console.WriteLine("\t13 - Validate XML from serialized Katalog");
            Console.WriteLine("\t14 - Transform XML from serialized Katalog");
            Console.WriteLine("0 - Exit");

            do
            {
                Console.Write("\nYour choice: ");
                switch (Console.ReadLine())
                {
                    #region MySerializer graph options
                case "1":
                {
                    Console.Write("Enter file path: ");
                    filePath = Console.ReadLine();
                    if (File.Exists(filePath))
                    {
                        File.Delete(filePath);
                    }
                    Class1 class1 = new Class1("KLASA1", DateTime.Now, 1.1d);
                    Class2 class2 = new Class2("KLASA2", DateTime.Now, 2.2d);
                    Class3 class3 = new Class3("KLASA3", DateTime.Now, 3.3d);
                    class1.Class2 = class2;
                    class1.Class3 = class3;
                    class2.Class1 = class1;
                    class2.Class3 = class3;
                    class3.Class1 = class1;
                    class3.Class2 = class2;
                    MySerializer mySerializer = new MySerializer();
                    using (FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate))
                    {
                        mySerializer.Serialize(fs, class1);
                        Console.WriteLine("> Serialization done");
                    }
                    break;
                }

                case "2":
                {
                    Console.Write("Enter file path: ");
                    filePath = Console.ReadLine();
                    if (File.Exists(filePath))
                    {
                        MySerializer mySerializer = new MySerializer();
                        using (FileStream fsDes = new FileStream(filePath, FileMode.Open))
                        {
                            try
                            {
                                class1Deserialized = (Class1)mySerializer.Deserialize(fsDes);
                                Console.WriteLine("> Deserialization done");
                            } catch (Exception e)
                            {
                                class1Deserialized = null;
                                Console.WriteLine(e.Message);
                            }
                        }
                    }
                    else
                    {
                        Console.WriteLine("> Given filePath does not exist");
                    }
                    break;
                }

                case "3":
                {
                    if (class1Deserialized == null)
                    {
                        Console.WriteLine("> You should deserialize the class first");
                    }
                    else
                    {
                        Console.WriteLine(class1Deserialized.ToString());
                    }
                    break;
                }
                    #endregion

                    #region JsonSerializer graph options
                case "4":
                {
                    Console.Write("Enter file path: ");
                    filePath = Console.ReadLine();
                    if (File.Exists(filePath))
                    {
                        File.Delete(filePath);
                    }
                    Class1 class1 = new Class1("KLASA1", new DateTime(2011, 1, 1, 1, 1, 1), 1.1d);
                    Class2 class2 = new Class2("KLASA2", new DateTime(2022, 2, 2, 2, 2, 2), 2.2d);
                    Class3 class3 = new Class3("KLASA3", new DateTime(2033, 3, 3, 3, 3, 3), 3.3d);
                    class1.Class2 = class2;
                    class1.Class3 = class3;
                    class2.Class1 = class1;
                    class2.Class3 = class3;
                    class3.Class1 = class1;
                    class3.Class2 = class2;
                    JsonSerializer.Serialize(class1, filePath);
                    Console.WriteLine("> Serialization done");
                    break;
                }

                case "5":
                {
                    Console.Write("Enter file path: ");
                    filePath = Console.ReadLine();
                    if (File.Exists(filePath))
                    {
                        try
                        {
                            class1Deserialized = (Class1)JsonSerializer.Deserialize <Class1>(filePath);
                            Console.WriteLine("> Deserialization done");
                        }
                        catch (Exception e)
                        {
                            class1Deserialized = null;
                            Console.WriteLine(e.Message);
                        }
                    }
                    else
                    {
                        Console.WriteLine("> Given filePath does not exist");
                    }
                    break;
                }

                case "6":
                {
                    if (class1Deserialized == null)
                    {
                        Console.WriteLine("> You should deserialize the class first");
                    }
                    else
                    {
                        Console.WriteLine(class1Deserialized.ToString());
                    }
                    break;
                }
                    #endregion

                    #region JsonSerializer zadanie1 options
                case "7":
                {
                    Console.Write("Enter file path: ");
                    filePath = Console.ReadLine();
                    if (File.Exists(filePath))
                    {
                        File.Delete(filePath);
                    }
                    DataContext dataContext = new DataContext();
                    IDataFiller dataFiller  = new ConstDataFiller();
                    dataFiller.Fill(dataContext);
                    JsonSerializer.Serialize(dataContext, filePath);
                    Console.WriteLine("> Serialization done");
                    break;
                }

                case "8":
                {
                    Console.Write("Enter file path: ");
                    filePath = Console.ReadLine();
                    if (File.Exists(filePath))
                    {
                        try
                        {
                            dataContextDeserialized = (DataContext)JsonSerializer.Deserialize <DataContext>(filePath);
                            Console.WriteLine("> Deserialization done");
                        }
                        catch (Exception e)
                        {
                            dataContextDeserialized = null;
                            Console.WriteLine(e.Message);
                        }
                    }
                    else
                    {
                        Console.WriteLine("> Given filePath does not exist");
                    }
                    break;
                }

                case "9":
                {
                    if (dataContextDeserialized == null)
                    {
                        Console.WriteLine("> You should deserialize the class first");
                    }
                    else
                    {
                        Console.WriteLine(dataContextDeserialized.ToString());
                    }
                    break;
                }
                    #endregion

                    #region XML Katalog options
                case "10":
                {
                    Console.Write("Enter file path: ");
                    filePath = Console.ReadLine();
                    if (!filePath.Contains("\\"))
                    {
                        filePath = ".\\XmlModel\\" + filePath;
                    }
                    if (File.Exists(filePath))
                    {
                        File.Delete(filePath);
                    }
                    Katalog        katalog   = new Katalog();
                    IXmlDataFiller xmlFiller = new ConstXmlDataFiller();
                    xmlFiller.Fill(katalog);
                    XmlSerialization.Serialize(katalog, filePath, "Katalog.xslt");
                    Console.WriteLine("> Serialization done");
                    break;
                }

                case "11":
                {
                    Console.Write("Enter file path: ");
                    filePath = Console.ReadLine();
                    if (!filePath.Contains("\\"))
                    {
                        filePath = ".\\XmlModel\\" + filePath;
                    }
                    if (File.Exists(filePath))
                    {
                        try
                        {
                            katalogDeserialized = XmlSerialization.Deserialize <Katalog>(filePath);
                            Console.WriteLine("> Deserialization done");
                        }
                        catch (Exception e)
                        {
                            katalogDeserialized = null;
                            Console.WriteLine(e.Message);
                        }
                    }
                    else
                    {
                        Console.WriteLine("> Given filePath does not exist");
                    }
                    break;
                }

                case "12":
                {
                    if (katalogDeserialized == null)
                    {
                        Console.WriteLine("> You should deserialize the class first");
                    }
                    else
                    {
                        Console.WriteLine(katalogDeserialized.ToString());
                    }
                    break;
                }

                case "13":
                {
                    Console.Write("Enter xml file path: ");
                    filePath = Console.ReadLine();
                    if (!filePath.Contains("\\"))
                    {
                        filePath = ".\\XmlModel\\" + filePath;
                    }
                    Console.Write("Enter xsd file path: ");
                    xsdFilePath = Console.ReadLine();
                    if (!xsdFilePath.Contains("\\"))
                    {
                        xsdFilePath = ".\\XmlModel\\" + xsdFilePath;
                    }
                    try
                    {
                        XmlSerialization.ValidateXml(xsdFilePath, filePath);
                        Console.WriteLine("Validation successful");
                    }
                    catch (XmlSchemaValidationException e)
                    {
                        Console.WriteLine(e.Message);
                    }
                    catch (FileLoadException e)
                    {
                        Console.WriteLine(e.Message);
                    }
                    break;
                }

                case "14":
                {
                    Console.Write("Enter xml file path: ");
                    filePath = Console.ReadLine();
                    if (!filePath.Contains("\\"))
                    {
                        filePath = ".\\XmlModel\\" + filePath;
                    }
                    Console.Write("Enter xslt file path: ");
                    xsltFilePath = Console.ReadLine();
                    if (!xsltFilePath.Contains("\\"))
                    {
                        xsltFilePath = ".\\XmlModel\\" + xsltFilePath;
                    }
                    Console.Write("Enter result file path: ");
                    htmlFilePath = Console.ReadLine();
                    if (!htmlFilePath.Contains("\\"))
                    {
                        htmlFilePath = ".\\XmlModel\\" + htmlFilePath;
                    }
                    try
                    {
                        XmlSerialization.XsltTransform(xsltFilePath, filePath, htmlFilePath);
                        Console.WriteLine("Transformation successful");
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);
                    }
                    break;
                }
                    #endregion

                    #region Options handling
                case "0":
                {
                    Environment.Exit(0);
                    break;
                }

                default:
                {
                    Console.WriteLine("> Unknown option");
                    break;
                }
                    #endregion
                }
            } while (true);
        }
Example #15
0
        public void WhenNoTypesAreRegisteredInSerializerItThrowsOnSerialization()
        {
            AbstractSerializer s = new MySerializer();

            AssertThrows <InvalidOperationException>(() => s.Serialize(new { }));
        }
Example #16
0
 private void Serialize(MemoryStream ms, ProtoMessage msg)
 {
     m_Serializer.Serialize(ms, msg);
 }
 public void WhenNoTypesAreRegisteredInSerializerItThrowsOnSerialization()
 {
     AbstractSerializer s = new MySerializer();
       AssertThrows<InvalidOperationException>(() => s.Serialize(new { }));
 }
Example #18
0
        static void Main(string[] args)
        {
            MySerializer serializer = new MySerializer();

            Console.WriteLine("Available operations: ");
            Console.WriteLine(
                "[0] Serialize graph \n[1] Deserialize graph\n" +
                "[2] Serialize list \n[3] Deserialize list\n" +
                "[4] Serialize graph to JSON\n[5] Deserialize graph from JSON\n" +
                "[6] Validate JSON (List)\n[7] Serialize List to JSON\n[8] Deserialize List from JSON\n[9] Exit");
            int choice = 0;

            Class1 class1 = new Class1("Text", DateTime.Now, 5.5);
            Class2 class2 = new Class2("Text2", DateTime.Now);
            Class3 class3 = new Class3("Text3", DateTime.Now);

            class1.Class2 = class2;
            class1.Class3 = class3;

            class3.Class1 = class1;
            class3.Class2 = class2;

            class2.Class1 = class1;
            class2.Class3 = class3;

            List <Document> documents = new List <Document>
            {
                new Document(123, "342"),
                new Document(23, "sdsd")
            };

            DocumentBinder binder = new DocumentBinder(documents, new Alias[] { new Alias("A1"), new Alias("A2") });

            while (choice != 10)
            {
                choice = Console.Read() - '0';
                switch (choice)
                {
                case 0:
                    using (FileStream fileStream = new FileStream("serializationGraph.txt", FileMode.Create))
                    {
                        serializer.Serialize(fileStream, class1);
                        Console.WriteLine("Object serialized");
                        Console.WriteLine("Path: " + Directory.GetCurrentDirectory());
                    }

                    break;

                case 1:
                    using (FileStream fileStream = new FileStream("serializationGraph.txt", FileMode.Open))
                    {
                        serializer.Deserialize(fileStream);
                        Console.WriteLine("Object deserialized");
                    }

                    break;

                case 2:
                    using (FileStream fileStream = new FileStream("serializationList.txt", FileMode.Create))
                    {
                        serializer.Serialize(fileStream, binder);
                        Console.WriteLine("Object serialized");
                        Console.WriteLine("Path: " + Directory.GetCurrentDirectory());
                    }

                    break;

                case 3:
                    using (FileStream fileStream = new FileStream("serializationList.txt", FileMode.Open))
                    {
                        serializer.Deserialize(fileStream);
                        Console.WriteLine("Object deserialized");
                    }

                    break;

                case 4:
                    using (FileStream fileStream = new FileStream("serializationGraph.json", FileMode.Create))
                    {
                        JsonSerializer.Serialize(fileStream, class1);
                        Console.WriteLine("Object serialized");
                        Console.WriteLine("Path: " + Directory.GetCurrentDirectory());
                    }

                    break;

                case 5:
                    using (FileStream fileStream = new FileStream("serializationGraph.json", FileMode.Open))
                    {
                        Class1 deserialize = JsonSerializer.Deserialize <Class1>(fileStream);
                        Console.WriteLine("Object deserialized");
                    }

                    break;

                case 6:
                    using (FileStream fileStream = new FileStream("serializationList.json", FileMode.Open))
                    {
                        string json;
                        using (StreamReader reader = new StreamReader(fileStream))
                        {
                            json = reader.ReadToEnd();
                        }

                        JSchemaGenerator generator = new JSchemaGenerator();
                        Console.WriteLine(JsonSerializer.Validate(generator.Generate(typeof(DocumentBinder)), json)
                                ? "Valid"
                                : "InValid");
                    }

                    break;

                case 7:
                    using (FileStream fileStream = new FileStream("serializationList.json", FileMode.Create))
                    {
                        JsonSerializer.Serialize(fileStream, binder);
                        Console.WriteLine("Object serialized");
                        Console.WriteLine("Path: " + Directory.GetCurrentDirectory());
                    }

                    break;

                case 8:
                    using (FileStream fileStream = new FileStream("serializationList.json", FileMode.Open))
                    {
                        DocumentBinder deserialize = JsonSerializer.Deserialize <DocumentBinder>(fileStream);
                        Console.WriteLine("Object deserialized");
                    }

                    break;

                case 9:
                    Environment.Exit(0);
                    break;
                }
            }
        }
Example #19
0
        private async void ReadProto(Button button)
        {
            var path = @"nwind.proto.bin";
            var folder = Windows.ApplicationModel.Package.Current.InstalledLocation;
            var file = await folder.GetFileAsync(path);

            var readStream = await file.OpenReadAsync();
            IInputStream inputSteam = readStream.GetInputStreamAt(0);
            DataReader dataReader = new DataReader(inputSteam);
            uint numBytesLoaded = await dataReader.LoadAsync((uint)readStream.Size);
            byte[] raw = new byte[readStream.Size];
            dataReader.ReadBytes(raw);
            var ms = new MemoryStream(raw);

            var ser = new MySerializer();
            var dal = (DAL.DatabaseCompat)ser.Deserialize(ms, null, typeof(DAL.DatabaseCompat));

            StringBuilder perfStats = new StringBuilder();

            perfStats.AppendLine(".NET for Metro style apps");
            perfStats.AppendFormat("{0} orders from NWind", dal.Orders.Count).AppendLine();
            
            var dcs = new DataContractSerializer(typeof(DAL.DatabaseCompat));
            var xs = new XmlSerializer(typeof(DAL.DatabaseCompat));
            using (var buffer = new MemoryStream())
            {
                const int loop = 50;
                var watch = Stopwatch.StartNew();
                for (int i = 0; i < loop; i++)
                {
                    buffer.SetLength(0);
                    dcs.WriteObject(buffer, dal);
                }
                watch.Stop();
                perfStats.AppendLine().AppendLine().AppendLine("DataContractSerializer:").AppendFormat("WriteObject x {0}: {1:###,###}ms, {2:###,###} bytes", loop, watch.ElapsedMilliseconds, buffer.Length);

                watch = Stopwatch.StartNew();
                for (int i = 0; i < loop; i++)
                {
                    buffer.Position = 0;
                    dcs.ReadObject(buffer);
                }
                watch.Stop();
                perfStats.AppendLine().AppendFormat("ReadObject x {0}: {1:###,###}ms", loop, watch.ElapsedMilliseconds);

                watch = Stopwatch.StartNew();
                for (int i = 0; i < loop; i++)
                {
                    buffer.SetLength(0);
                    xs.Serialize(buffer, dal);
                }
                watch.Stop();
                perfStats.AppendLine().AppendLine().AppendLine("XmlSerializer:").AppendFormat("Serialize x {0}: {1:###,###}ms, {2:###,###} bytes", loop, watch.ElapsedMilliseconds, buffer.Length);

                watch = Stopwatch.StartNew();
                for (int i = 0; i < loop; i++)
                {
                    buffer.Position = 0;
                    xs.Deserialize(buffer);
                }
                watch.Stop();
                perfStats.AppendLine().AppendFormat("Deserialize x {0}: {1:###,###}ms", loop, watch.ElapsedMilliseconds);

                watch = Stopwatch.StartNew();
                for (int i = 0; i < loop; i++)
                {
                    buffer.SetLength(0);
                    ser.Serialize(buffer, dal);
                }
                watch.Stop();
                perfStats.AppendLine().AppendLine().AppendLine("protobuf-net").AppendFormat("Serialize x {0}: {1:###,###}ms, {2:###,###} bytes", loop, watch.ElapsedMilliseconds, buffer.Length);

                watch = Stopwatch.StartNew();
                for (int i = 0; i < loop; i++)
                {
                    buffer.Position = 0;
                    ser.Deserialize(buffer, null, typeof(DAL.DatabaseCompat));
                }
                watch.Stop();
                perfStats.AppendLine().AppendFormat("Deserialize x {0}: {1:###,###}ms", loop, watch.ElapsedMilliseconds);

                watch = Stopwatch.StartNew();
                for (int i = 0; i < loop; i++)
                {
                    buffer.SetLength(0);
                    Serializer.Serialize(buffer, dal);
                }
                watch.Stop();
                perfStats.AppendLine().AppendLine().AppendLine("protobuf-net (runtime)").AppendFormat("Serialize x {0}: {1:###,###}ms, {2:###,###} bytes", loop, watch.ElapsedMilliseconds, buffer.Length);

                watch = Stopwatch.StartNew();
                for (int i = 0; i < loop; i++)
                {
                    buffer.Position = 0;
                    Serializer.Deserialize<DAL.DatabaseCompat>(buffer);
                }
                watch.Stop();
                perfStats.AppendLine().AppendFormat("Deserialize x {0}: {1:###,###}ms", loop, watch.ElapsedMilliseconds);


             
            }
            button.Content = perfStats.ToString();


            // test SM2Stats
            bool isSer = ser.CanSerializeContractType(typeof(SM2Stats));

            SM2Stats stats = new SM2Stats
            {
                acqreps = 1,
                difficultyhistory =  {
                    new DiffHistPair { date = 123, values = { 3.4f }}
                }
            };
            var clone = (SM2Stats)ser.DeepClone(stats); // checked by eye; is the same

        }
Example #20
0
        private async void ReadProto(Button button)
        {
            var path   = @"nwind.proto.bin";
            var folder = Windows.ApplicationModel.Package.Current.InstalledLocation;
            var file   = await folder.GetFileAsync(path);

            var readStream = await file.OpenReadAsync();

            IInputStream inputSteam     = readStream.GetInputStreamAt(0);
            DataReader   dataReader     = new DataReader(inputSteam);
            uint         numBytesLoaded = await dataReader.LoadAsync((uint)readStream.Size);

            byte[] raw = new byte[readStream.Size];
            dataReader.ReadBytes(raw);
            var ms = new MemoryStream(raw);

            var ser = new MySerializer();
            var dal = (DAL.DatabaseCompat)ser.Deserialize(ms, null, typeof(DAL.DatabaseCompat));

            StringBuilder perfStats = new StringBuilder();

            perfStats.AppendLine(".NET for Metro style apps");
            perfStats.AppendFormat("{0} orders from NWind", dal.Orders.Count).AppendLine();

            var dcs = new DataContractSerializer(typeof(DAL.DatabaseCompat));
            var xs  = new XmlSerializer(typeof(DAL.DatabaseCompat));

            using (var buffer = new MemoryStream())
            {
                const int loop  = 50;
                var       watch = Stopwatch.StartNew();
                for (int i = 0; i < loop; i++)
                {
                    buffer.SetLength(0);
                    dcs.WriteObject(buffer, dal);
                }
                watch.Stop();
                perfStats.AppendLine().AppendLine().AppendLine("DataContractSerializer:").AppendFormat("WriteObject x {0}: {1:###,###}ms, {2:###,###} bytes", loop, watch.ElapsedMilliseconds, buffer.Length);

                watch = Stopwatch.StartNew();
                for (int i = 0; i < loop; i++)
                {
                    buffer.Position = 0;
                    dcs.ReadObject(buffer);
                }
                watch.Stop();
                perfStats.AppendLine().AppendFormat("ReadObject x {0}: {1:###,###}ms", loop, watch.ElapsedMilliseconds);

                watch = Stopwatch.StartNew();
                for (int i = 0; i < loop; i++)
                {
                    buffer.SetLength(0);
                    xs.Serialize(buffer, dal);
                }
                watch.Stop();
                perfStats.AppendLine().AppendLine().AppendLine("XmlSerializer:").AppendFormat("Serialize x {0}: {1:###,###}ms, {2:###,###} bytes", loop, watch.ElapsedMilliseconds, buffer.Length);

                watch = Stopwatch.StartNew();
                for (int i = 0; i < loop; i++)
                {
                    buffer.Position = 0;
                    xs.Deserialize(buffer);
                }
                watch.Stop();
                perfStats.AppendLine().AppendFormat("Deserialize x {0}: {1:###,###}ms", loop, watch.ElapsedMilliseconds);

                watch = Stopwatch.StartNew();
                for (int i = 0; i < loop; i++)
                {
                    buffer.SetLength(0);
                    ser.Serialize(buffer, dal);
                }
                watch.Stop();
                perfStats.AppendLine().AppendLine().AppendLine("protobuf-net").AppendFormat("Serialize x {0}: {1:###,###}ms, {2:###,###} bytes", loop, watch.ElapsedMilliseconds, buffer.Length);

                watch = Stopwatch.StartNew();
                for (int i = 0; i < loop; i++)
                {
                    buffer.Position = 0;
                    ser.Deserialize(buffer, null, typeof(DAL.DatabaseCompat));
                }
                watch.Stop();
                perfStats.AppendLine().AppendFormat("Deserialize x {0}: {1:###,###}ms", loop, watch.ElapsedMilliseconds);

                watch = Stopwatch.StartNew();
                for (int i = 0; i < loop; i++)
                {
                    buffer.SetLength(0);
                    Serializer.Serialize(buffer, dal);
                }
                watch.Stop();
                perfStats.AppendLine().AppendLine().AppendLine("protobuf-net (runtime)").AppendFormat("Serialize x {0}: {1:###,###}ms, {2:###,###} bytes", loop, watch.ElapsedMilliseconds, buffer.Length);

                watch = Stopwatch.StartNew();
                for (int i = 0; i < loop; i++)
                {
                    buffer.Position = 0;
                    Serializer.Deserialize <DAL.DatabaseCompat>(buffer);
                }
                watch.Stop();
                perfStats.AppendLine().AppendFormat("Deserialize x {0}: {1:###,###}ms", loop, watch.ElapsedMilliseconds);
            }
            button.Content = perfStats.ToString();


            // test SM2Stats
            bool isSer = ser.CanSerializeContractType(typeof(SM2Stats));

            SM2Stats stats = new SM2Stats
            {
                acqreps           = 1,
                difficultyhistory =
                {
                    new DiffHistPair {
                        date = 123, values ={         3.4f }
                    }
                }
            };
            var clone = (SM2Stats)ser.DeepClone(stats); // checked by eye; is the same
        }