2

私はIDialogボットで を使用しており、ボット フレームワークによって実行されるメソッドの 1 つには、context.Wait()通常どおり 2 つの引数がありました。

public async Task MainScreenSelectionReceived(IDialogContext context, 
                       IAwaitable<IMessageActivity> argument)

このメソッドに 3 番目のオプションの引数を追加したいと思います。これは、このメソッドをコード内のどこかから直接実行する場合に指定します (Bot Framework が後で実行してcontext.Wait()ユーザーからメッセージを受信する場合とは対照的です)。

そのため、メソッドを次のように変更します。

public async Task MainScreenSelectionReceived(IDialogContext context, 
                       IAwaitable<IMessageActivity> argument, 
                       bool doNotShowPrompt = false)

そのため、すべてのcontext.Wait呼び出しが無効として表示されるようになりました。

無効な context.wait

メソッド宣言から 3 番目の引数を削除すると、そのエラーは消えます。

Visual Studio によって表示されるメッセージは次のとおりです。

メソッド IDialogStack.Wait(ResumeAfter resume) の型引数は、使用法から推測できません。型引数を明示的に指定してみてください。

context.Waitそれはasを呼び出す必要があることを意味すると思いますcontext.Wait<SOMETHING>が、 の代わりに何を書くべきかわかりませんSOMETHING

4

2 に答える 2

2

オプションの引数を追加するのではなく、オーバーロードを作成します。メソッド シグネチャは、必要なデリゲートを満たしていません。

例えば:

public async Task MainScreenSelectionReceived(IDialogContext context, 
                       IAwaitable<IMessageActivity> argument, bool doNotShowPrompt) 
{
    //Original code here
}

public async Task MainScreenSelectionReceived(IDialogContext context, 
                       IAwaitable<IMessageActivity> argument) 
{
    return await MainScreenSelectionReceived(context, argument, false);
}
于 2016-12-14T02:58:40.370 に答える