12

我有一个 ViewModel,它在构造函数中调用 async void 方法以添加到集合中

public MyViewModel(ICommandHandler commandHandler)
{
    _commandHandler = commandHandler;
    SetupCollection();
}


private async void SetupCollection()
{
    var commands = GetCommands();

    foreach (var command in commands)
    {
        var response = await _commandHandler.ExecuteGetReply(command);

        if (response != null)
           Response.Add(response);
    }
}

我将如何对_commandHandler.ExecuteGetReply()命令进行存根以返回值?

另外,在构造函数中有这样的函数可以做这样的事情吗?或者这可能应该在一个......override void OnActivate()电话中进行(我正在使用Caliburn Micro)?

4

1 回答 1

23

ICommandHandler.ExecuteGetReply似乎返回 aTask<Response>因此您可以执行以下操作:

ICommand commandArg;
Response response;
stubHandler.Stub(h => h.ExecuteGetReply(commandArg)).Return(Task.FromResult(response));

但是,我不会从您的构造函数中调用 async void 方法,因为当它完成时您将无法收到通知。

于 2013-08-22T17:52:07.897 回答