public async Task <TCommandResult> ExecuteAsync <TCommandResult>(ICommand <TCommandResult> command) { var handlerInstance = (dynamic)_handlerResolver.ResolveCommandHandler(command, typeof(ICommandHandler <,>)); var result = await handlerInstance.HandleAsync((dynamic)command); if (result.IsSuccess) { return(result.Value); } throw new GeneralException(result.Error); }