亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用術語屬性來控制每個項目欄的選擇

使用術語屬性來控制每個項目欄的選擇

C#
DIEA 2021-07-06 11:39:42
我正在試驗 Bot Framework 教程附帶的 Sandwich Order 示例。在該示例代碼中,有一個SandwichOrder包含用于存儲澆頭的列表屬性的類。public enum ToppingOptions{    [Terms("except", "but", "not", "no", "all", "everything")]    Everything = 1,    Avocado, BananaPeppers, Cucumbers, GreenBellPeppers, Jalapenos,    Lettuce, Olives, Pickles, RedOnion, Spinach, Tomatoes}[Serializable]public class SandwichOrder{    [Prompt("Which {&} would you like? {||}")]    [Describe("toppings")]    public List<ToppingOptions> Toppings;    public static IForm<SandwichOrder> BuildForm()    {        return new FormBuilder<SandwichOrder>()            .Message("Welcome to the simple sandwich order bot!")            .Build();    }};我正在試驗該Terms屬性,如此處所述FormFlow 的高級功能當我在模擬器中運行機器人時,選擇澆頭的問題按預期出現......我像這樣輸入我的選擇......結果不是我所期望的。機器人總結了我的選擇是這樣的......根據教程,結果應該是......我不清楚我在這里哪里出錯了。有人可以幫我嗎?
查看完整描述

1 回答

?
四季花海

TA貢獻1811條經驗 獲得超5個贊

事實上,我認為您錯過了本教程的一部分。您需要在構建器中添加代碼來處理“一切”和“但是”這個詞。


下面的代碼顯示了如何為這個詞做所有的事情。


.Field(nameof(Toppings),

                validate: async (state, value) =>

                {

                    var values = ((List<object>)value).OfType<ToppingOptions>();

                    var result = new ValidateResult { IsValid = true, Value = values };

                    if (values != null && values.Contains(ToppingOptions.everything))

                    {

                        result.Value = (from ToppingOptions topping in Enum.GetValues(typeof(ToppingOptions))

                                        where topping != ToppingOptions.everything && !values.Contains(topping)

                                        select topping).ToList();


                        value = result.Value;

                    }

                    return result;

                })


查看完整回答
反對 回復 2021-07-10
  • 1 回答
  • 0 關注
  • 211 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號