在Dictionary中持有类

时间:2018-05-10 10:38:56

标签: botframework bots chatbot luis

我有一个关于在字典中举办课程的问题。所以我正在开展一个关于大学的项目。有多个教师姓名。当用户输入教师姓名时,我指导用户使用适当的教师课程context.call enter image description here

所以在这里,如果用户输入show me computer engineering,则用户指向ShowComp类。

但是使用if-else会让代码真的难以理解。我想我可以将这些关键字放到字典中 enter image description here

但是这次context.Call给出了关于值类型的错误。我应该把字典值类型放在哪里。我无法弄清楚它。任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

这样做:

        static Dictionary<String, Type> FACULTY_CLASS_MAP;


        /**
         * faculty class mapping.
        */
        FACULTY_CLASS_MAP= new Dictionary<String, Type>
        {
            { "Text", typeof(FacultyClass) }
        }

答案 1 :(得分:0)

由于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);
        }
    }
}