Ejemplo n.º 1
0
        public void DeserializeComplex_AbstractAndInterfaceClass()
        {
            var obj = new ClassWithAbstractAndInterface
            {
                A = new ImplementAbstractAndInterface {
                    MyProp = 10
                },
                B = new ImplementAbstractAndInterface {
                    MyProp = 20
                },
            };

            var expressionStr = obj.AsExpression().DefaultSerializer.Serialize();

            var factory = new ComplexEntityFactory(obj.GetType());

            factory.AddMapType <Interface, ImplementAbstractAndInterface>();
            factory.AddMapType <AbstractClass, ImplementAbstractAndInterface>();

            var deserializer = new ComplexEntityExpressionDeserializer();
            var deserialized = deserializer.Deserialize <ClassWithAbstractAndInterface>(expressionStr, factory);

            Assert.Equal(10, deserialized.A.MyProp);
            Assert.Equal(20, deserialized.B.MyProp);
        }
Ejemplo n.º 2
0
        public void EntityFactory6()
        {
            var root = new Entity(0)
                       + (new Entity("A", 1) + new Entity("MyProp", "10"))
                       + (new Entity("B", 2) + new Entity("MyProp", "20"));

            var factory = new ComplexEntityFactory <ClassWithAbstractAndInterface>(root);

            factory.AddMapType <Interface, ImplementAbstractAndInterface>();
            factory.AddMapType <AbstractClass, ImplementAbstractAndInterface>();

            // Build entity and get typed value
            var entity = factory.Build().Value;

            System.Console.WriteLine(entity.A.MyProp);
            System.Console.WriteLine(entity.A.GetType().Name);
            System.Console.WriteLine(entity.B.MyProp);
            System.Console.WriteLine(entity.B.GetType().Name);
        }