Exemplo n.º 1
0
        public static void Test()
        {
            IBehaviorProvider behaviorProvider = new AttributeBehaviorCollection()
                                                 .Add(typeof(LogAttribute), typeof(LogBehavior));

            ReflectionPipeline <ProductQueryHandler> pipeline     = new ReflectionPipeline <ProductQueryHandler>(behaviorProvider, new DefaultReflectionBehaviorFactory());
            IQueryHandler <ProductQuery, Product>    queryHandler = new BehaviorQueryHandler <ProductQueryHandler, ProductQuery, Product>(pipeline, new DefaultFactory <ProductQueryHandler>());

            Task <Product> task = queryHandler.HandleAsync(new ProductQuery()
            {
                Name = "Test"
            });

            if (!task.IsCompleted)
            {
                task.RunSynchronously();
            }

            Console.WriteLine(task.Result.Price);
        }
        private void TestPipeline(Func <IBehaviorProvider, IPipeline <ProductQueryHandler> > pipelinefactory)
        {
            IBehaviorProvider behaviorProvider = new GlobalBehaviorCollection()
                                                 .Add(typeof(TestBehavior));

            IPipeline <ProductQueryHandler>       pipeline     = pipelinefactory(behaviorProvider);
            IQueryHandler <ProductQuery, Product> queryHandler = new BehaviorQueryHandler <ProductQueryHandler, ProductQuery, Product>(pipeline, new DefaultFactory <ProductQueryHandler>());

            Task <Product> task = queryHandler.HandleAsync(new ProductQuery()
            {
                Name = "Test"
            }, default);

            if (!task.IsCompleted)
            {
                task.RunSynchronously();
            }

            Assert.AreEqual(10.1M, task.Result.Price);
            Assert.AreEqual(1, TestBehavior.count);
        }