public void GeneralTest()
        {
            var b    = new ClassDefinition.BuildContextDefinition();
            var test = b.AddType("Test", ClassDefinition.DefinitionTypeEnums.SimpleType);

            test.AddProperty("FirstName", typeof(string));
            test.AddProperty("LastName", typeof(string));
            test.AddProperty("Uid", typeof(Guid));

            var     t        = b.Compile("TestAssembly")[0];
            dynamic instance = t.CreateInstance <dynamic>();

            instance.FirstName = "Lukas";
            instance.LastName  = "Dorn-Fussenegger";
            instance.Uid       = Guid.NewGuid();

            var json = Newtonsoft.Json.JsonConvert.SerializeObject(instance);

            Console.WriteLine(json);

            dynamic deserialized = Newtonsoft.Json.JsonConvert.DeserializeObject(json, t);

            //Creates: {"FirstName":"Lukas","LastName":"Dorn-Fussenegger","Uid":"7183685b-b314-4fd8-8bc5-7488e52618c4"}

            Assert.IsTrue(deserialized.FirstName == "Lukas");
        }
Beispiel #2
0
        private static void Test2()
        {
            var b = new ClassDefinition.BuildContextDefinition();

            var links = b.AddType("Url", ClassDefinition.DefinitionTypeEnums.SimpleType);

            links.AddProperty("Url", typeof(string));
            links.AddProperty("Title", typeof(string));

            var address = b.AddType("Address", ClassDefinition.DefinitionTypeEnums.SimpleType);

            address.AddProperty("Street", typeof(string));
            address.AddProperty("Housenumber", typeof(string));
            address.AddProperty("PostcalCode", typeof(string));
            address.AddProperty("Country", typeof(string));

            var test = b.AddType("Test", ClassDefinition.DefinitionTypeEnums.SimpleType);

            test.AddProperty("FirstName", typeof(string));
            test.AddProperty("LastName", typeof(string));
            test.AddProperty("Uid", typeof(Guid));
            test.AddProperty("Address", address);
            test.AddPropertyOfList("Links", links);

            var defJson = Newtonsoft.Json.JsonConvert.SerializeObject(b, Newtonsoft.Json.Formatting.Indented);
            {
                var t = b.Compile("test").FirstOrDefault(w => w.Name == "Test");
                var i = t.CreateInstance() as Interfaces.IPropertyGetAndSet;
                var linkCollection = i.GetPropertyValue <Interfaces.IGenericAddNewList>("Links");

                int x = 0;
                foreach (var item in linkCollection.CreateAndAdd(3))
                {
                    x += 1;
                    var l = item as Interfaces.IPropertyGetAndSet;
                    l.SetPropertyValue("Url", $"{x}");
                    l.SetPropertyValue("Title", $"{x}");
                }

                var serializer = new SerializerBuilder().Build();

                var yaml = serializer.Serialize(b);

                var json = Newtonsoft.Json.JsonConvert.SerializeObject(i, Newtonsoft.Json.Formatting.Indented);

                Console.WriteLine(yaml);
                Console.WriteLine(
                    json
                    );
            }



            {
                var deserialized   = Newtonsoft.Json.JsonConvert.DeserializeObject <ClassDefinition.BuildContextDefinition>(defJson);
                var b2             = deserialized;
                var t              = b2.Compile("test").FirstOrDefault(w => w.Name == "Test");
                var i              = t.CreateInstance() as Interfaces.IPropertyGetAndSet;
                var linkCollection = i.GetPropertyValue <Interfaces.IGenericAddNewList>("Links");

                int x = 0;
                foreach (var item in linkCollection.CreateAndAdd(3))
                {
                    x += 1;
                    var l = item as Interfaces.IPropertyGetAndSet;
                    l.SetPropertyValue("Url", $"{x}");
                    l.SetPropertyValue("Title", $"{x}");
                }

                var serializer = new SerializerBuilder().Build();

                var yaml = serializer.Serialize(b2);

                var json = Newtonsoft.Json.JsonConvert.SerializeObject(i, Newtonsoft.Json.Formatting.Indented);

                Console.WriteLine(yaml);
                Console.WriteLine(
                    json
                    );
            }
        }