首页 > 解决方案 > 在字典中上课

问题描述

我有一个关于在字典中开课的问题。所以我正在做一个关于大学的项目。有多个教师姓名。当用户键入教师姓名时,我使用 context.call 将用户引导到适当的教师班级

所以在这里,如果用户输入 show me computer engineering,用户会被定向到 ShowComp 类。

但是使用 if-else 会使代码真的不可读。我认为我可以将这些关键字放入字典

但是这一次 context.Call 给出了一个关于值类型的错误。我应该把字典值类型放在什么地方。我想不通。有人可以帮我吗?

标签: botframeworkbotschatbotazure-language-understanding

解决方案


由于 Dialogs 继承自IDialog<object>,因此您可以将其放入字典中:

private readonly Dictionary<string, IDialog<object>> options 
      = new Dictionary<string, IDialog<object>>
        { { "computer", new ShowComp() }, { "law", new ShowLaw() } };

public async Task GetFacilities(IDialogContext context, LuisResult result)
{
    var entity = result.Entities.FirstOrDefault(e => options.ContainsKey(e.Entity));

    if (entity != null)
    {
        IDialog<object> dialog = null;
        if (options.TryGetValue(entity.Entity, out dialog))
        {
            context.Call(dialog, this.AfterResume);
        }
    }
}

推荐阅读