Ejemplo n.º 1
0
        /// <summary>
        /// Deserializes a string expression with custom complex entity factory
        /// </summary>
        /// <param name="expression">Expressin as string</param>
        /// <param name="factory">This factory is util to customize entity creation</param>
        /// <returns>Return a complety entity</returns>
        public async Task <object> DeserializeAsync(string expression, ComplexEntityFactory factory)
        {
            var roslyn = new RoslynExpressionDeserializer <Entity>();
            var runner = roslyn.GetDelegateExpression(expression, factory.GetType());
            var root   = await runner(factory);

            factory.Root = root;
            return(factory.Build().Value);
        }
Ejemplo n.º 2
0
        public void EntityFactory5()
        {
            var root    = new Entity(0) + new Entity("[0]", "10") + new Entity("[1]: 11");
            var factory = new ComplexEntityFactory <int[]>(root);

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

            System.Console.WriteLine(entity[0]);
            System.Console.WriteLine(entity[1]);
        }
Ejemplo n.º 3
0
        public void EntityFactory4()
        {
            var root    = new Entity(0) + new Entity("System.Int32._intValue: 1000");
            var factory = new ComplexEntityFactory <MyClass>(root);

            // Build entity
            factory.Build();

            var entity = factory.Value;

            System.Console.WriteLine(typeof(MyClass).GetField("_intValue", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(entity));
        }
Ejemplo n.º 4
0
        public void EntityFactory2()
        {
            var root    = new Entity(0) + new Entity("Child", 0);
            var factory = new ComplexEntityFactory <MyClass>(root);

            // Build entity
            factory.Build();

            var entity = factory.Value;

            System.Console.WriteLine(entity == entity.Child);
        }
Ejemplo n.º 5
0
        public void EntityFactory()
        {
            var root    = new Entity(0) + new Entity("Name: Entity name ;)");
            var factory = new ComplexEntityFactory <CircularEntity>(root);

            // Build entity
            factory.Build();

            var entity = factory.Value;

            System.Console.WriteLine(entity.Name);
        }
Ejemplo n.º 6
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);
        }