コード例 #1
0
        public void ShouldGenerateObjectFromData()
        {
            var now = DateTime.Now;
            Dictionary <string, object> objDef = new Dictionary <string, object>
            {
                { "StringProp", "test data" },
                { "IntProp", 48 },
                { "DateProp", now },
                { "DoubleProp", 45.98 }
            };

            var  obj = TypeGenerator.MakeObject("NewTypeB", objDef);
            Type t   = obj.GetType();

            Assert.That("NewTypeB", Is.EqualTo(t.Name));

            var pi = t.GetField("StringProp");

            Assert.That(typeof(string), Is.EqualTo(pi.FieldType));
            Assert.That(pi.GetValue(obj), Is.EqualTo("test data"));

            pi = t.GetField("IntProp");
            Assert.That(typeof(int), Is.EqualTo(pi.FieldType));
            Assert.That(pi.GetValue(obj), Is.EqualTo(48));

            pi = t.GetField("DateProp");
            Assert.That(typeof(DateTime), Is.EqualTo(pi.FieldType));
            Assert.That(pi.GetValue(obj), Is.EqualTo(now));

            pi = t.GetField("DoubleProp");
            Assert.That(typeof(double), Is.EqualTo(pi.FieldType));
            Assert.That(pi.GetValue(obj), Is.EqualTo(45.98));
        }
コード例 #2
0
        public void ShouldBeJsonSerializable()
        {
            var now = DateTime.Now;
            Dictionary <string, object> objDef = new Dictionary <string, object>
            {
                { "StringProp", "test data" },
                { "IntProp", 48 },
                { "DateProp", now },
                { "DoubleProp", 45.98 },
                { "ArrayProp", new [] { 1, 3, 5, 7 } },
                { "ListProp", new List <string>(new [] { "a", "b", "c" }) }
            };

            var obj = TypeGenerator.MakeObject(null, objDef);

            string s = JsonConvert.SerializeObject(obj, Formatting.Indented);

            Console.WriteLine(s);

            var obj2 = (IObjectAccessor)JsonConvert.DeserializeObject(s, obj.GetType());

            Assert.That(obj2["StringProp"], Is.EqualTo("test data"));
            Assert.That(obj2["IntProp"], Is.EqualTo(48));
            Assert.That(obj2["DateProp"], Is.EqualTo(now));
            Assert.That(obj2["DoubleProp"], Is.EqualTo(45.98));
            Assert.That(obj2.GetValue <int[]>("ArrayProp").Length, Is.EqualTo(4));
            Assert.That(obj2.GetValue <List <string> >("ListProp").Count, Is.EqualTo(3));
        }