2013-08-22 10 views
12

私はコレクションに追加するには、コンストラクタでは、非同期voidメソッドへの呼び出しを行い、ViewModelにしていRhinoのモック・スタブの非同期メソッド

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を使用しています)?それは持っていたときに通知を受ける方法がないだろうので、私は、しかし、あなたのコンストラクタから非同期voidメソッドを呼び出すことはありません

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

答えて

19

ICommandHandler.ExecuteGetReplyはそうあなたのような何かを行うことができますTask<Response>を返すように見えます完了しました。

+0

'commandHandler.ExecuteGetReply'が例外をスローするとどうなりますか? –

関連する問題