示例#1
0
        static void Main2(string[] args)
        {
            var serviceCollection = new ServiceCollection();

            serviceCollection.AddFluentMediator(builder =>
            {
                builder.On <PingRequest>().Pipeline()
                .Call <PingHandler>((handler, req) => handler.MyMethod(req))
                .Call <PingHandler>((handler, req) => handler.MyLongMethod(req));
                builder.On <PingRequest>().PipelineAsync()
                .Call <PingHandler>(async(handler, req) => await handler.MyMethodAsync(req));
                builder.On <PingRequest>().CancellablePipelineAsync()
                .Call <PingHandler>(async(handler, req, ct) => await handler.MyMethodAsync(req, ct));
            });
            serviceCollection.AddScoped <PingHandler>();

            var provider = serviceCollection.BuildServiceProvider();
            var mediator = provider.GetService <IMediator>();

            var ping = new PingRequest("Ping");
            var cts  = new CancellationTokenSource();

            Console.WriteLine("Publishing Ping. Should Pong Twice.");

            mediator.Publish(ping);

            Console.WriteLine("Publishing Ping Async. Should Pong One.");

            mediator.PublishAsync(ping)
            .GetAwaiter()
            .GetResult();

            Console.WriteLine("Publishing Cancellable Ping. Should Pong One.");

            mediator.PublishAsync(ping, cts.Token)
            .GetAwaiter()
            .GetResult();

            Console.ReadLine();
        }
示例#2
0
 public void MyMethod(PingRequest request)
 {
     Console.WriteLine($"{ request.Message } .. Pong ");
 }
示例#3
0
 public async Task MyMethodAsync(PingRequest request, CancellationToken cancelationToken)
 {
     Console.WriteLine($"{ request.Message } - - - - - Pong ");
     await Task.CompletedTask;
 }
示例#4
0
 public async Task MyMethodAsync(PingRequest request)
 {
     Console.WriteLine($"{ request.Message } > > > > Pong ");
     await Task.CompletedTask;
 }