C# 如何覆盖LUISINT属性?

C# 如何覆盖LUISINT属性?,c#,bots,botframework,azure-language-understanding,C#,Bots,Botframework,Azure Language Understanding,如何覆盖LuisIntent属性,使其同时使用IntentName和EntityName???我相信,您想做的事情可以用一种更简单的方式来完成,假设您想做的是根据检测到的实体或多个实体执行不同的逻辑 在intent方法中获得的LuisResult类包含一个Entities属性,其中包含基于您的查询检测到的实体列表 如果您仍然想做过滤覆盖的事情,那么我相信您必须从覆盖的DispatchToIntentHandler方法开始。该方法负责根据需要调用哪个处理程序的意图名称查找意图处理程序字典 但是,这

如何覆盖LuisIntent属性,使其同时使用IntentName和EntityName???

我相信,您想做的事情可以用一种更简单的方式来完成,假设您想做的是根据检测到的实体或多个实体执行不同的逻辑

在intent方法中获得的LuisResult类包含一个Entities属性,其中包含基于您的查询检测到的实体列表

如果您仍然想做过滤覆盖的事情,那么我相信您必须从覆盖的DispatchToIntentHandler方法开始。该方法负责根据需要调用哪个处理程序的意图名称查找意图处理程序字典

但是,这还不够,您必须创建一个新的EnumerateHandlers,因为正如我前面提到的,正在创建处理程序字典,只是将intent名称作为键,而且您似乎希望合并实体

最后,您必须更新LuisIntentAttribute以合并要筛选的实体名称


正如您所看到的,覆盖路径并不是最好的方式

您希望为1个意图和2个实体使用2种不同的方法?与一般属性不同,LuisAtAttribute不是密封的,因此您可以对其进行子类化-但是框架不会知道您已经这样做了,也不会将实体传递给它。。。无论如何,您已经在LuisResult参数中获得了实体。
[LuisIntent(intentName: "Eligibility")]
private async Task Eligibility(IDialogContext context, LuisResult result)
{
   await context.PostAsync($"You have chosen the eligibility intent with no entities");
  context.Wait(MessageReceivedAsync);
}