public MyViewModel Create()
    {
        MyCommandContext context = new MyCommandContext();

        IMyViewmodelCommandManager manager = this.container.Resolve <IMyViewmodelCommandManager>(new ResolverOverride[] { new ParameterOverride("context", context) });

        ICommand myCommand = new DelegateCommand(manager.ExecuteMyCommand);

        MyViewModel viewModel = new MyViewModel(myCommand);
        IMyViewModelCommandSynchronizer synchronizer = this.container.Resolve <IMyViewmodelCommandManager>(new ResolverOverride[] { new ParameterOverride("context", context), new ParameterOverride("viewModel", viewModel) });

        synchronizer.Initialize();

        return(viewModel);
    }
예제 #2
0
        private async Task <(string, EmbedBuilder, PaginatedMessage)> BuildReply(IUserMessage msg, string message)
        {
            var context = new MyCommandContext(_client, _mainHandler, msg);
            var result  = await _commands.ExecuteAsync(context, message, _services);

            if (!result.IsSuccess && result.Error != CommandError.UnknownCommand)
            {
                return(result.ErrorReason, null, null);
            }
            else if (!result.IsSuccess)
            {
                if (!_mainHandler.QueryHandler.IsReady())
                {
                    return("Loading cache...", null, null);  //TODO: Change message
                }
                else
                {
                    try
                    {
                        var tuple = await _mainHandler.QueryHandler.RunAsync(message);

                        if (tuple.Item2 is PaginatorBuilder pag)
                        {
                            var paginated = new PaginatedMessage(pag.Pages, "Results", user: msg.Author, options: new AppearanceOptions {
                                Timeout = TimeSpan.FromMinutes(10)
                            });
                            return(null, null, paginated);
                        }
                        else
                        {
                            return(tuple.Item1, tuple.Item2, null);
                        }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.ToString());
                        return("Uh-oh... I think some pipes have broken...", null, null);
                    }
                }
            }
            return(null, null, null);
        }
 MyViewModelCommandSynchronizer(MyViewModel viewModel, MyCommandContext context)
 {
     this.viewModel = viewModel;
     this.context   = context;
 }
 public MyViewModelCommandManager(MyViewModelCommandContext context)
 {
     this.context = context;