コード例 #1
0
        public void OptimizedList()
        {
            const string expected =
#if CORE
                @"<?xml version=""1.0"" encoding=""utf-8""?><OptimizedNamespaceExtensionTests-ClassWithDifferingPropertyType xmlns:exs=""https://extendedxmlserializer.github.io/v2"" xmlns:ns1=""clr-namespace:System.Collections.Generic;assembly=System.Collections"" xmlns:sys=""https://extendedxmlserializer.github.io/system"" xmlns=""clr-namespace:ExtendedXmlSerializer.Tests.ExtensionModel.Xml;assembly=ExtendedXmlSerializer.Tests""><Interface exs:type=""OptimizedNamespaceExtensionTests-GeneralImplementation""><Instance exs:type=""ns1:HashSet[sys:string]""><sys:string>Hello</sys:string><sys:string>World</sys:string><sys:string>Hope</sys:string><sys:string>This</sys:string><sys:string>Works!</sys:string></Instance></Interface></OptimizedNamespaceExtensionTests-ClassWithDifferingPropertyType>";
#else
                @"<?xml version=""1.0"" encoding=""utf-8""?><OptimizedNamespaceExtensionTests-ClassWithDifferingPropertyType xmlns:exs=""https://extendedxmlserializer.github.io/v2"" xmlns:ns1=""clr-namespace:System.Collections.Generic;assembly=System.Core"" xmlns:sys=""https://extendedxmlserializer.github.io/system"" xmlns=""clr-namespace:ExtendedXmlSerializer.Tests.ExtensionModel.Xml;assembly=ExtendedXmlSerializer.Tests""><Interface exs:type=""OptimizedNamespaceExtensionTests-GeneralImplementation""><Instance exs:type=""ns1:HashSet[sys:string]""><sys:string>Hello</sys:string><sys:string>World</sys:string><sys:string>Hope</sys:string><sys:string>This</sys:string><sys:string>Works!</sys:string></Instance></Interface></OptimizedNamespaceExtensionTests-ClassWithDifferingPropertyType>";
#endif

            var instance = new ClassWithDifferingPropertyType
            {
                Interface = new GeneralImplementation
                {
                    Instance = new HashSet <string> {
                        "Hello", "World", "Hope", "This", "Works!"
                    }
                }
            };
            var serializer = new ConfigurationContainer().UseOptimizedNamespaces()
                             .Create();
            serializer.Serialize(instance)
            .Should()
            .Be(expected);
            serializer.Serialize(instance)
            .Should()
            .Be(expected);
        }
コード例 #2
0
        public void Execute(object parameter)
        {
// Example

            var serializer = new ConfigurationContainer().UseOptimizedNamespaces()
                             .Create();
            var subject = new List <object>
            {
                new Subject {
                    Message = "First"
                },
                new Subject {
                    Message = "Second"
                },
                new Subject {
                    Message = "Third"
                }
            };
            var contents = serializer.Serialize(subject);
// ...
// EndExample

            var @default = new ConfigurationContainer().Create()
                           .Serialize(new XmlWriterSettings {
                Indent = true
            }, subject);

            File.WriteAllText(@"bin\Extensibility.OptimizedNamepsaces.Default.xml", @default);

            var data = serializer.Serialize(new XmlWriterSettings {
                Indent = true
            }, subject);

            File.WriteAllText(@"bin\Extensibility.OptimizedNamepsaces.Optimized.xml", data);
        }
コード例 #3
0
ファイル: AutoFormatting.cs プロジェクト: wtf3505/home
        public void Execute(object parameter)
        {
// Example

            IExtendedXmlSerializer serializer = new ConfigurationContainer().UseAutoFormatting()
                                                .Create();
            SubjectWithThreeProperties subject = new SubjectWithThreeProperties {
                Message = "Hello World!", Number = 123, Time = DateTime.Now
            };
            string contents = serializer.Serialize(subject);
// ...
// EndExample

            string @default = new ConfigurationContainer().Create()
                              .Serialize(new XmlWriterSettings {
                Indent = true
            }, subject);

            File.WriteAllText(@"bin\Extensibility.AutoFormatting.Default.xml", @default);

            string data = serializer.Serialize(new XmlWriterSettings {
                Indent = true
            }, subject);

            File.WriteAllText(@"bin\Extensibility.AutoFormatting.Enabled.xml", data);
        }
コード例 #4
0
        public void EmptyItems()
        {
            var serializer = new ConfigurationContainer().ForTesting();

            serializer.Serialize(new Subject())
            .Should()
            .Be(@"<?xml version=""1.0"" encoding=""utf-8""?><Issue128Tests-Subject xmlns=""clr-namespace:ExtendedXmlSerializer.Tests.ReportedIssues;assembly=ExtendedXmlSerializer.Tests"" />");

            var instance = new Subject();

            instance.Counts.Add(6776);
            serializer.Serialize(instance)
            .Should()
            .Be(@"<?xml version=""1.0"" encoding=""utf-8""?><Issue128Tests-Subject xmlns=""clr-namespace:ExtendedXmlSerializer.Tests.ReportedIssues;assembly=ExtendedXmlSerializer.Tests""><Counts><int xmlns=""https://extendedxmlserializer.github.io/system"">6776</int></Counts></Issue128Tests-Subject>");
        }
コード例 #5
0
        public void Execute(object parameter)
        {
// Converter
            IExtendedXmlSerializer serializer = new ConfigurationContainer().Register(CustomStructConverter.Default).Create();
            CustomStruct           subject    = new CustomStruct(123);
            string contents = serializer.Serialize(subject);
// ...
// EndConverter

            string data = serializer.Serialize(new XmlWriterSettings {
                Indent = true
            }, subject);

            File.WriteAllText(@"bin\Extensibility.Converters.xml", data);
        }
コード例 #6
0
        public void Execute(object parameter)
        {
// Example
            IExtendedXmlSerializer serializer = new ConfigurationContainer().EnableParameterizedContent()
                                                .Create();
            ParameterizedSubject subject = new ParameterizedSubject("Hello World!", 123, DateTime.Now);
            string contents = serializer.Serialize(subject);
// ...
// EndExample

            string data = serializer.Serialize(new XmlWriterSettings {
                Indent = true
            }, subject);

            File.WriteAllText(@"bin\Extensibility.ParameterizedContent.xml", data);
        }
コード例 #7
0
ファイル: DictianarySamples.cs プロジェクト: wtf3505/home
        public static void Run()
        {
            Program.PrintHeader("Serialization");

            IExtendedXmlSerializer serializer = new ConfigurationContainer().Create();
// InitDictionary

            TestClass obj = new TestClass
            {
                Dictionary = new Dictionary <int, string>
                {
                    { 1, "First" },
                    { 2, "Second" },
                    { 3, "Other" },
                }
            };
// EndInitDictionary
            string xml = serializer.Serialize(new XmlWriterSettings {
                Indent = true
            }, obj);

            File.WriteAllText("bin\\DictianarySamples.xml", xml);
            Console.WriteLine(xml);

            Program.PrintHeader("Deserialization");
            serializer.Deserialize <TestClass>(xml);

            serializer = new ConfigurationContainer().UseOptimizedNamespaces().Create();
            xml        = serializer.Serialize(new XmlWriterSettings()
            {
                Indent = true
            }, obj);
            File.WriteAllText("bin\\DictianarySamplesUseOptimizedNamespaces.xml", xml);
        }
コード例 #8
0
        public void Execute(object parameter)
        {
// Example
            var serializer = new ConfigurationContainer().EnableAllConstructors()
                             .Create();
            var subject  = SubjectByFactory.Create("Hello World!");
            var contents = serializer.Serialize(subject);
// ...
// EndExample

            var data = serializer.Serialize(new XmlWriterSettings {
                Indent = true
            }, subject);

            File.WriteAllText(@"bin\Extensibility.PrivateConstructors.xml", data);
        }
コード例 #9
0
        public void Execute(object parameter)
        {
            List <Subject> legacy = new List <Subject>
            {
                new Subject {
                    Message = "First"
                },
                new Subject {
                    Message = "Second"
                },
                new Subject {
                    Message = "Third"
                }
            };

#pragma warning disable 618
            File.WriteAllText(@"bin\Upgrade.Example.v1.xml", new ExtendedXmlSerialization.ExtendedXmlSerializer().Serialize(legacy));

// Example

            ExtendedXmlSerialization.ExtendedXmlSerializer legacySerializer = new ExtendedXmlSerialization.ExtendedXmlSerializer();
            string         content = File.ReadAllText(@"bin\Upgrade.Example.v1.xml"); // Path to your legacy xml file.
            List <Subject> subject = legacySerializer.Deserialize <List <Subject> >(content);

// Upgrade:
            IExtendedXmlSerializer serializer = new ConfigurationContainer().Create();
            string contents = serializer.Serialize(new XmlWriterSettings {
                Indent = true
            }, subject);
            File.WriteAllText(@"bin\Upgrade.Example.v2.xml", contents);
// ...
// EndExample
#pragma warning restore 618
        }
コード例 #10
0
        public void DictionaryAttributes()
        {
            var serializer = new ConfigurationContainer()
                             .Type <SimpleSubject>()
                             .Member(x => x.Number, x => x.Attribute())
                             .Create();

            var expected = new DictionaryWithProperties
            {
                { "First", 1 },
                { "Second", 2 },
                { "Other", 3 }
            };

            expected.Message = HelloWorld;
            expected.Number  = 6776;

            var data   = serializer.Serialize(expected);
            var actual = serializer.Deserialize <DictionaryWithProperties>(data);

            Assert.NotNull(actual);
            Assert.Equal(HelloWorld, actual.Message);
            Assert.Equal(6776, actual.Number);
            Assert.Equal(expected.Count, actual.Count);
            foreach (var entry in actual)
            {
                Assert.Equal(expected[entry.Key], entry.Value);
            }
        }
コード例 #11
0
        void Verify()
        {
            var container = new ConfigurationContainer().EnableReaderContext()
                            .ConfigureType <Owner>()
                            .Member(x => x.Element)
                            .Register(typeof(Serializer))
                            .Create();

            var instance = new Owner
            {
                Element = new DatabaseObject {
                    Id = Guid.NewGuid(), Table = "TableName", Creted = "Loader"
                }
            };
            var content = container.Serialize(instance);
            var key     = new XmlReaderFactory().Get(new MemoryStream(Encoding.UTF8.GetBytes(content)));
            var owner   = Get(key);

            RestoreDatabaseObjects.Default.Execute(key);

            owner.ShouldBeEquivalentTo(instance);
            owner.Element.Table.Should()
            .Be("TableName");

            Owner Get(XmlReader reader)
            {
                using (reader)
                {
                    return((Owner)container.Deserialize(reader));
                }
            }
        }
コード例 #12
0
 public bool SaveSattings()
 {
     lock (syncLoadSet)
     {
         try
         {
             IExtendedXmlSerializer serializer = new ConfigurationContainer().UseAutoFormatting()
                                                 .UseOptimizedNamespaces()
                                                 .EnableImplicitTyping(typeof(Setting))
                                                 .Create();
             var document = serializer.Serialize(new XmlWriterSettings {
                 Indent = true
             }, setting);
             using (StreamWriter writer = new StreamWriter(get_setting_file_patch()))
             {
                 writer.WriteLine(document);
             }
         }
         catch (Exception ex)
         {
             Console.WriteLine("Error save setting: " + ex);
         }
     }
     return(true);
 }
コード例 #13
0
ファイル: XmlHelper.cs プロジェクト: wwkkww1983/SDDQ-dev
        private static void XmlSerializeInternal(Stream stream, object o, Encoding encoding)
        {
            if (o == null)
            {
                throw new ArgumentNullException("o");
            }
            if (encoding == null)
            {
                throw new ArgumentNullException("encoding");
            }

            IExtendedXmlSerializer serializer = new ConfigurationContainer()
                                                .EnableImplicitTyping(typeof(object))
                                                .UseOptimizedNamespaces()
                                                .Create();

            XmlWriterSettings settings = new XmlWriterSettings();

            settings.Indent       = true;
            settings.NewLineChars = "\r\n";
            settings.Encoding     = encoding;
            settings.IndentChars  = "    ";

            using (XmlWriter writer = XmlWriter.Create(stream, settings))
            {
                serializer.Serialize(writer, o);
                writer.Close();
            }
        }
コード例 #14
0
ファイル: UnitTest1.cs プロジェクト: SuperJMN/TestEXS
        public void Test1()
        {
            var patches = new List <PatchMapping>()
            {
                new PatchMapping()
                {
                    Source          = "File1.bin",
                    Destination     = "EFI\\Microsoft\\Boot",
                    TargetPartition = TargetPartition.Boot,
                    Condition       = new Always(),
                }
            };

            var serializer = new ConfigurationContainer()
                             .EnableImplicitTypingFromNamespacePublic <PatchMapping>()
                             .Create();

            using (var xmlTextWriter = new XmlTextWriter("file.xml", Encoding.UTF8)
            {
                Formatting = Formatting.Indented
            })
            {
                serializer.Serialize(xmlTextWriter, patches);
            }
        }
コード例 #15
0
        public void GenericDictionaryAttributes()
        {
            var serializer = new ConfigurationContainer()
                             .Type <GenericDictionaryWithProperties <int, string> >()
                             .Member(x => x.Message, x => x.Attribute())
                             .Member(x => x.Number, x => x.Attribute())
                             .Create();

            var expected = new GenericDictionaryWithProperties <int, string>
            {
                { 1, "First" },
                { 2, "Second" },
                { 3, "Other" }
            };

            expected.Message = HelloWorld;
            expected.Number  = 6776;

            var data   = serializer.Serialize(expected);
            var actual = serializer.Deserialize <GenericDictionaryWithProperties <int, string> >(data);

            Assert.NotNull(actual);
            Assert.Equal(HelloWorld, actual.Message);
            Assert.Equal(6776, actual.Number);
            Assert.Equal(expected.Count, actual.Count);
            foreach (var entry in actual)
            {
                Assert.Equal(expected[entry.Key], entry.Value);
            }
        }
コード例 #16
0
 public static Settings LoadSettings()
 {
     try
     {
         if (File.Exists(SettingsFileName))
         {
             using (XmlReader reader = XmlReader.Create(SettingsFileName))
             {
                 IExtendedXmlSerializer serializer = new ConfigurationContainer().Create();
                 return((Settings)serializer.Deserialize(reader));
             }
         }
         else
         {
             //creating example conf
             using (var writer = XmlWriter.Create(SettingsFileName, xmlWriterSettings))
             {
                 IExtendedXmlSerializer serializer = new ConfigurationContainer().Create();
                 Settings exampleSettings          = new Settings();
                 exampleSettings.initDefaultSettings();
                 serializer.Serialize(writer, exampleSettings);
                 writer.Flush();
             }
         }
     }
     catch (Exception e)
     {
         MainWindow.HandleError("Error during write file (stats.xml)", e, false);
     }
     return(null);
 }
コード例 #17
0
        public void OptimizedDictionary()
        {
            const string expected =
#if CORE
                @"<?xml version=""1.0"" encoding=""utf-8""?><OptimizedNamespaceExtensionTests-ClassWithDifferingPropertyType xmlns:exs=""https://extendedxmlserializer.github.io/v2"" xmlns:sys=""https://extendedxmlserializer.github.io/system"" xmlns:ns1=""clr-namespace:JetBrains.Annotations;assembly=JetBrains.Annotations"" xmlns:ns2=""clr-namespace:System.ComponentModel;assembly=System.ComponentModel"" xmlns=""clr-namespace:ExtendedXmlSerializer.Tests.ExtensionModel.Xml;assembly=ExtendedXmlSerializer.Tests""><Interface exs:type=""OptimizedNamespaceExtensionTests-GeneralImplementation""><Instance exs:type=""sys:Dictionary[sys:Object,sys:Object]""><sys:Item><Key exs:type=""ns2:CancelEventArgs""><Cancel>false</Cancel></Key><Value exs:type=""ns1:UsedImplicitlyAttribute"" /></sys:Item></Instance></Interface></OptimizedNamespaceExtensionTests-ClassWithDifferingPropertyType>";
#else
                @"<?xml version=""1.0"" encoding=""utf-8""?><OptimizedNamespaceExtensionTests-ClassWithDifferingPropertyType xmlns:exs=""https://extendedxmlserializer.github.io/v2"" xmlns:sys=""https://extendedxmlserializer.github.io/system"" xmlns:ns1=""clr-namespace:JetBrains.Annotations;assembly=JetBrains.Annotations"" xmlns:ns2=""clr-namespace:System.ComponentModel;assembly=System"" xmlns=""clr-namespace:ExtendedXmlSerializer.Tests.ExtensionModel.Xml;assembly=ExtendedXmlSerializer.Tests""><Interface exs:type=""OptimizedNamespaceExtensionTests-GeneralImplementation""><Instance exs:type=""sys:Dictionary[sys:Object,sys:Object]""><sys:Item><Key exs:type=""ns2:CancelEventArgs""><Cancel>false</Cancel></Key><Value exs:type=""ns1:UsedImplicitlyAttribute"" /></sys:Item></Instance></Interface></OptimizedNamespaceExtensionTests-ClassWithDifferingPropertyType>";
#endif

            var instance = new ClassWithDifferingPropertyType
            {
                Interface = new GeneralImplementation
                {
                    Instance = new Dictionary <object, object>
                    {
                        { new CancelEventArgs(), new UsedImplicitlyAttribute() }
                    }
                }
            };
            var serializer = new ConfigurationContainer().UseOptimizedNamespaces()
                             .Create();
            var data = serializer.Serialize(instance);
            data.Should()
            .Be(expected);
        }
コード例 #18
0
        public void Execute(object parameter)
        {
            Program.PrintHeader("Serialization with Settings Override");
// Serialization

            IExtendedXmlSerializer serializer = new ConfigurationContainer().Create();
            TestClass    instance             = new TestClass();
            MemoryStream stream = new MemoryStream();

            string contents = serializer.Serialize(new XmlWriterSettings {             /* ... */
            }, stream, instance);

// EndSerialization

            Console.WriteLine(contents);

            Program.PrintHeader("Deserialization with Settings Override");
// Deserialization

            MemoryStream contentStream = new MemoryStream(Encoding.UTF8.GetBytes(contents));
            TestClass    deserialized  = serializer.Deserialize <TestClass>(new XmlReaderSettings {       /* ... */
            }, contentStream);

// EndDeserialization
            Console.WriteLine($"Object id = {deserialized.Id}");
        }
コード例 #19
0
 public void Save(string fileName)
 {
     using (var stream = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite))
     {
         var serializer = new ConfigurationContainer().Create();
         serializer.Serialize(stream, this);
     }
 }
コード例 #20
0
        public static string ToXML2 <T>(T obj)
        {
            IExtendedXmlSerializer serializer = new ConfigurationContainer().Create();

            return(serializer.Serialize(new XmlWriterSettings {
                Indent = true
            }, obj));
        }
コード例 #21
0
        public void BasicArray()
        {
            var serializer = new ConfigurationContainer().EnableClassicMode().Create();
            var expected   = new[] { 1, 2, 3, 4, 5 };
            var data       = serializer.Serialize(expected);
            var actual     = serializer.Deserialize <int[]>(data);

            Assert.Equal(expected, actual);
        }
コード例 #22
0
        public void Execute(object parameter)
        {
// Example
            var serializer = new ConfigurationContainer().EnableImplicitTyping(typeof(Subject))
                             .Create();
            var subject = new Subject {
                Message = "Hello World!  No namespaces, yay!"
            };
            var contents = serializer.Serialize(subject);
// ...
// EndExample

            var data = serializer.Serialize(new XmlWriterSettings {
                Indent = true
            }, subject);

            File.WriteAllText(@"bin\Extensibility.ImplicitTypes.xml", data);
        }
コード例 #23
0
        public void Execute(object parameter)
        {
// Example
            var serializer = new ConfigurationContainer().EnableParameterizedContent()
                             .Type <Tuple <string> >()
                             .Member(x => x.Item1)
                             .Name("Message")
                             .Create();
            var subject  = Tuple.Create("Hello World!");
            var contents = serializer.Serialize(subject);
// ...
// EndExample

            var data = serializer.Serialize(new XmlWriterSettings {
                Indent = true
            }, subject);

            File.WriteAllText(@"bin\Extensibility.Tuples.xml", data);
        }
コード例 #24
0
        public string Serialize <T>(T item)
        {
            IExtendedXmlSerializer serializer = new ConfigurationContainer()
                                                .UseAutoFormatting()
                                                .UseOptimizedNamespaces()
                                                .EnableImplicitTyping(typeof(T))
                                                .Create();

            return(serializer.Serialize(XmlWriterSettings, item));
        }
コード例 #25
0
        public void Execute(object parameter)
        {
// Example
            IExtendedXmlSerializer serializer = new ConfigurationContainer().Type <Subject>()
                                                .Member(x => x.Message)
                                                .Verbatim()
                                                .Create();
            Subject subject = new Subject {
                Message = @"<{""Ilegal characters and such""}>"
            };
            string contents = serializer.Serialize(subject);
// ...
// EndExample

            string @default = serializer.Serialize(new XmlWriterSettings {
                Indent = true
            }, subject);

            File.WriteAllText(@"bin\Extensibility.VerbatimContent.xml", @default);
        }
コード例 #26
0
        public void ShouldPreserveNullValueIfDefaultIsNotNull()
        {
            var serializer = new ConfigurationContainer().Emit(EmitBehaviors.Assigned).Create();

            var xml = serializer.Serialize(new ClassWithDefaultString {
                Name = null
            });
            var deserialized = serializer.Deserialize <ClassWithDefaultString>(xml);

            deserialized.Name.Should().BeNull();
        }
コード例 #27
0
        public void BasicHashSet()
        {
            var serializer = new ConfigurationContainer().EnableClassicMode().Create();
            var expected   = new HashSet <string> {
                "Hello", "World", "Hope", "This", "Works!"
            };
            var data   = serializer.Serialize(expected);
            var actual = serializer.Deserialize <HashSet <string> >(data);

            Assert.True(actual.SetEquals(expected));
        }
コード例 #28
0
        public void Verify()
        {
            var serializer = new ConfigurationContainer().UseAutoFormatting()
                             .UseOptimizedNamespaces()
                             .EnableReferences()
                             .Create()
                             .ForTesting();

            var myRef    = new Foo();
            var instance = new Foo
            {
                Ref1 = myRef,
                Ref2 = myRef
            };

            var first  = serializer.Serialize(serializer.Cycle(instance));
            var second = serializer.Serialize(serializer.Cycle(instance));

            first.Should().Be(second);
        }
コード例 #29
0
ファイル: DataSave.cs プロジェクト: petrsobolev/OOP-2
        public DataXml SaveInXmlFormat(Data data)
        {
            DataXml dataXml = new DataXml();

            foreach (var item in data)
            {
                var serializer = new ConfigurationContainer().Create();
                var xml        = serializer.Serialize(item);
            }
            return(dataXml);
        }
コード例 #30
0
        public string Serialize <T>(T item)
        {
            // using a 3rd party serializer 'cause the default one cannot serialize interfaces
            // https://github.com/ExtendedXmlSerializer/home
            IExtendedXmlSerializer serializer = new ConfigurationContainer()
                                                .UseAutoFormatting()
                                                .UseOptimizedNamespaces()
                                                .EnableImplicitTyping(typeof(T))
                                                .Create();

            return(serializer.Serialize(XmlWriterSettings, item));
        }