Register Command Handler Middleware
app.Map("/api/command", x =>
{
// x.UsePerRequestTransaction();
x.UseCommands();
});Register Query Handler Middleware
app.Map("/api/query", x =>
{
// x.UsePerRequestTransaction();
x.UseQueries();
});public class MyCqrsOptions : SimpleInjectorCqrsOptions
{
// default HTTP methods allowed for commands when not set by HttpMethodAttribute
public override string[] DefaultCommandHttpMethods => new[] { HttpMethod.Post.Method };
// default HTTP methods allowed for queries when not set by HttpMethodAttribute
public override string[] DefaultQueryHttpMethods => new[] { HttpMethod.Get.Method, HttpMethod.Post.Method };
public MyCqrsOptions(Container container) : base(container)
{
}
}
...
container.Options.AllowOverridingRegistrations = true;
container.RegisterSingleton<MyCqrsOptions, BillingCqrsOptions>();
container.Options.AllowOverridingRegistrations = false;// Register command & query handlers from Assembly of MyCommandOrQueryHandler
container.RegisterCqrsFromAssemblyOf<MyCommandOrQueryHandler>();
// Register command handlers from Assembly of MyCommandHandler
container.RegisterCommandHandlersFromAssemblyOf<MyCommandHandler>();
// Register query handlers from Assembly of MyQueryHandler
container.RegisterQueryHandlersFromAssemblyOf<MyQueryHandler>();