using System.Collections.Generic;
using System.Threading.Tasks;
public static void Main()
public class SomePlaceToCallBeeb
private readonly IMediator mediator;
public SomePlaceToCallBeeb(IMediator mediator)
this.mediator = mediator;
public async Task Meh(int groupId)
var user = await this.mediator.Send(new GetUserCommand(groupId));
public class GetUserCommand : IRequest<User>
public GetUserCommand(int groupId)
public int GroupId { get; private set; }
public class GetUserCommandHandler : IRequestHandler<GetUserCommand, User>
private readonly IBeebClient client;
public GetUserCommandHandler(IBeebClient client)
public async Task<User> Handle(GetUserCommand command, CancellationToken ct)
return await this.client.GetResponse<User>(string.Format("http://mockapi.com/user/{0}", command.GroupId));
public IList<Person> People { get; set; }
public interface IBeebClient
Task<T> GetResponse<T>(string url);
public class BeebClient : IBeebClient
public async Task<T> GetResponse<T>(string url)
var json = @"{ people: [], tasks: [] }";
return await Task.FromResult(JsonConvert.DeserializeObject<T>(json));