Messaging with no dependencies.
Supports request/response, commands, queries synchronous and async with dispatching via C# generic variance.
You should install LocatR with NuGet:
Install-Package LocatR
Install-Package Unity.Mvc4
To reference only the contracts for LocatR, which includes:
IRequest
The following code demonstrates basic usage.
Add Global.asax.cs in Application_Start
using Unity;
using Unity.Injection;
var container = this.AddUnity();
container.RegisterType<ILocatR, LocatR.LocatR>(new InjectionConstructor(container, typeof(Startup).Assembly.GetTypes()));
Create Example Command
public class WtiteEventCommand: IRequest
{
public string value { get; set; }
}
and CommandHandler
public class WtiteEventCommandHandler : IRequestHandler<WtiteEventCommand>
{
Task IRequestHandler<WtiteEventCommand>.Handle(WtiteEventCommand request, CancellationToken cancellationToken)
{
return Task.CompletedTask;
}
}
in Page
public partial class _Default : Page
{
private readonly ILocatR _locator;
public _Default(ILocatR locator)
{
_locator = locator;
}
protected async void Page_Load(object sender, EventArgs e)
{
await _locator.SendCommand(new WtiteEventCommand() { value = "Hello World" });
}
}