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".
我有一个 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".