我有一个ViewModel,它在构造函数中调用异步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)吗?
答案 0 :(得分:22)
ICommandHandler.ExecuteGetReply
似乎返回Task<Response>
,因此您可以执行以下操作:
ICommand commandArg;
Response response;
stubHandler.Stub(h => h.ExecuteGetReply(commandArg)).Return(Task.FromResult(response));
但是,我不会从构造函数中调用异步void方法,因为在完成后无法通知您。