我正在实现一个反馈对话框,并且想使用IScorable
然后关掉“反馈”这个词并推动我的FeedbackDialog
到堆栈上。
我不希望在收集用户反馈时出现这种行为。有没有办法确定我的FeedbackDialog
已经在堆栈上了吗?那么我不会不小心双推它吗?
您可以像下面这样解析堆栈。首先,注册必要的模块:
private void RegisterTypes()
{
var builder = new ContainerBuilder();
builder.RegisterModule(new DialogModule());
builder.RegisterModule(new ReflectionSurrogateModule());
builder.RegisterModule(new DialogModule_MakeRoot());
// necessary configurations
// ...
}
之后,解析堆栈:
using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, activity))
{
var stack = scope.Resolve<IDialogStack>();
}
in stack.Frames
您可以在堆栈对话框中按顺序找到对话框列表(stack.Frames[0]
位于堆栈顶部)。您可以使用以下命令找到对话框的名称Target
的财产Frame
, i.e., stack.Frames[0].Target
。因此,您可以找到FeedbackDialog
如果存在,则使用以下代码将其放入堆栈中:
stack.Frames.Any(x=> x.Target.GetType().UnderlyingSystemType.Name == "FeedbackDialog")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)