我正在尝试在多个迭代中循环对话框。
示例:我想连续5次问一个问题(使用不同的参数)。我可以用无限循环循环对话框MyDialog.Loop()
-没问题。
但是我需要一个有限的数-我认为我需要使用Chain.While()
。
到目前为止,没有成功,我找不到使用的任何示例Chain.While()
。
非常感谢任何帮助或示例代码。
谢谢!
这是一个固定计数的while循环示例:
[TestMethod]
public async Task SampleChain_While_Count()
{
var root =
Chain
.PostToChain()
.Select(_ => (IReadOnlyList<string>)Array.Empty<string>())
.While
(
items => Chain
.Return(items)
.Select(i => i.Count < 3),
items => Chain
.Return(items)
.Select(i => $"question {i.Count}")
.PostToUser()
.WaitToBot()
.Select(a => items.Concat(new[] { a.Text }).ToArray())
)
.Select(items => string.Join(",", items))
.PostToUser();
using (var container = Build(Options.ResolveDialogFromContainer | Options.Reflection))
{
var builder = new ContainerBuilder();
builder
.RegisterInstance(root)
.As<IDialog<object>>();
builder.Update(container);
await AssertScriptAsync(container,
"hello",
"question 0",
"A",
"question 1",
"B",
"question 2",
"C",
"A,B,C"
);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句