Botframework 在字典里上课
我有一个关于在字典里上课的问题。所以我正在做一个关于一所大学的项目。有不止一个教员姓名。当用户键入教员姓名时,我使用context.call将用户引导到适当的教员班级 所以在这里,如果用户进入showcomputerengineering,用户将被引导到ShowComp类 但使用if-else会让代码变得不可读。我想我可以把这些关键字放到字典里 但是这次context.Call给出了一个关于值类型的错误。我应该把什么放在字典值类型中。我弄不清楚。有人能帮我吗?这样做:Botframework 在字典里上课,botframework,bots,chatbot,azure-language-understanding,Botframework,Bots,Chatbot,Azure Language Understanding,我有一个关于在字典里上课的问题。所以我正在做一个关于一所大学的项目。有不止一个教员姓名。当用户键入教员姓名时,我使用context.call将用户引导到适当的教员班级 所以在这里,如果用户进入showcomputerengineering,用户将被引导到ShowComp类 但使用if-else会让代码变得不可读。我想我可以把这些关键字放到字典里 但是这次context.Call给出了一个关于值类型的错误。我应该把什么放在字典值类型中。我弄不清楚。有人能帮我吗?这样做: stati
static Dictionary<String, Type> FACULTY_CLASS_MAP;
/**
* faculty class mapping.
*/
FACULTY_CLASS_MAP= new Dictionary<String, Type>
{
{ "Text", typeof(FacultyClass) }
}
由于对话框继承自IDialog,因此可以将其放入字典中:
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);
}
}
}
不使用对象映射,如果使用类,则应执行IDialog option=IDialogActivator.CreateInstanceoptions[option_from_query],new object[]{},Context.Calloption,after。。。。或者在……之后调用options[option\u from\u query]。。。。这是一个编程错误