public async Task ProcessAsync <T>(T command) { var handler = (IHandleCommandsAsync <T>)_commandHandlerFactory.CreateAsync <T>(); var attributes = GetAttributes <T>(handler); RunBeforeAttributes(command, attributes); await handler.Handle(command); _commandHandlerFactory.Dispose(handler); RunPostAttributesAndDispose(command, attributes); }