Не удается преобразовать «группу методов» в «ResumeAfter‹object›»

Я пытаюсь создать дочерний диалог с намерением Луиса получить дополнительную информацию от пользователя. Однако я получаю сообщение об ошибке «Невозможно преобразовать из «группы методов» в «ResumeAfter‹object›» для второго аргумента context.Call

[LuisIntent("Login")]
public async Task LoginIntent(IDialogContext context, LuisResult result)
{
    var serverdialog = new ServerDialog();
    await context.Call(serverdialog, ResumeAfterServerDialog); //error here
}

private async Task ResumeAfterServerDialog(IDialogContext context, IAwaitable<string> serverName)
{
    this.serverAddress = await serverName;
    await context.PostAsync($"you've entered {this.serverAddress}");
    context.Wait(MessageReceived);
}

Класс диалогового окна сервера

[Serializable]
public class ServerDialog : IDialog<object>
{
    public async Task StartAsync(IDialogContext context)
    {
        await context.PostAsync("Enter your server's name (example: 10.10.10.52)");
        context.Wait(ReceiveServerDialog);
    }

    public async Task ReceiveServerDialog(IDialogContext context, IAwaitable<IMessageActivity> result)
    {
        IMessageActivity message = await result;
        context.Done(message.Text);

    }
}

Я нашел объяснение, говорящее:

тип второго параметра для MessageReceived, скорее всего, IAwaitable, но вам нужен метод со вторым параметром IAwaitable, например, если вы передаете null в качестве значения результата, а тип вашего дочернего диалога — IDialog.

однако я не мог понять этого.


person Teragon    schedule 21.04.2017    source источник


Ответы (1)


Ваш диалог реализует IDialog<object>, но ваш метод ResumeAfter<T> ReceiveServerDialog ожидает строку (в параметре IAwaitable<string> serverName)

Измените свой диалог, чтобы реализовать IDialog<string>, или измените свой метод ReceiveServerDialog, чтобы он был

private async Task ResumeAfterServerDialog(IDialogContext context, IAwaitable<object> serverName)
person Ezequiel Jadib    schedule 21.04.2017
comment
Я понял, что как только вы опубликовали, это было правильное исправление, спасибо - person Teragon; 21.04.2017
comment
мне понадобилось несколько дней, чтобы понять это - person shabby; 20.10.2017