0

查看Message Controller for Pizza Example 的示例,如果我想根据一些用户输入填充 Size 或 Kind 并调用数据库,我该怎么做?

据我所知,没有一种简单的方法可以在运行时填充 Enum。

4

1 回答 1

0

看起来这还没有实现。我查看了https://github.com/Microsoft/BotBuilder/blob/master/CSharp/Library/FormFlow/FormBuilder.cs并发现了这个:

    internal static void TypePaths(Type type, string path, List<string> paths)
    {
        if (type.IsClass)
        {
            if (type == typeof(string))
            {
                paths.Add(path);
            }
            else if (type.IsIEnumerable())
            {
                var elt = type.GetGenericElementType();
                if (elt.IsEnum)
                {
                    paths.Add(path);
                }
                else
                {
                    // TODO: What to do about enumerations of things other than enums?
                }
            }
            else
            {
                FieldPaths(type, path, paths);
            }
        }
        else if (type.IsEnum)
        {
            paths.Add(path);
        }
        else if (type == typeof(bool))
        {
            paths.Add(path);
        }
        else if (type.IsIntegral())
        {
            paths.Add(path);
        }
        else if (type.IsDouble())
        {
            paths.Add(path);
        }
        else if (type.IsNullable() && type.IsValueType)
        {
            paths.Add(path);
        }
        else if (type == typeof(DateTime))
        {
            paths.Add(path);
        }
    }

请注意关于枚举以外的枚举的 TODO。

在 FormBuilder 之外,我们可以使用PromptDialog.ChoiceIEnumerable<>的选项。

可以将对话框链接在一起,因此您可能必须将您的对话框FormDialog分成两部分,并在两者之间使用 PromptDialog。

或者采用 BotBuilder 的一个分支并实现 TODO!

于 2016-04-10T15:53:51.250 回答