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); }