Microsoft Bot Framework FormFlow - 覆盖 [可选] 属性?

Microsoft Bot Framework FormFlow - Override [Optional] attribute?

我有一个 FormDialog LUIS entities bound to the state

public abstract class AbstractFormDialog
{
    [Optional]
    public string Entity1;

    [Optional]
   public string Entity2;

    [Optional]
    public string Entity3;

    [Optional]
    public string Entity4;

    [Optional]
    public string Entity5;
}

在 AbstractFormDialog 的子class 中,我希望能够说明其中一些实体是必需的,因此 "no preference" 不是一个选项。像

public abstract class FormDialog1 : AbstractFormDialog
{
    [Required]
    public string Entity1;

    [Required]
   public string Entity2;
}

有人知道这是否可行吗?当然,我可以在基础 class 中制作所有必需的属性,然后在扩展它的每个 class 中,列出哪些实体实际上是可选的。不过这种设计很糟糕,因为如果要添加一个新实体,每个子class 都需要更新。

您还可以在构建表单时通过在运行时使用 Field API 来控制它,即 新的 FormBuilder() .Field(new FieldReflector(nameof(FormDialog1.Entity1))) .SetOptional(false)) 。建造(); 这将使该实例的 Entity1 字段成为 "Required".