Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 组合来自链的表单的结果_C#_Botframework - Fatal编程技术网

C# 组合来自链的表单的结果

C# 组合来自链的表单的结果,c#,botframework,C#,Botframework,如何将表单中的结果合并为一个结果并将结果发布给用户? 我需要从链中设置声明属性,并将完成的SupportRequest发布给用户。 在文档中我看到了Chain.Fold方法,但我不知道如何使用它 我的代码: public enum SystemSelection { SharePoint, BizTalk, Azure, Office365 }; public enum RequestType { Bug, SupportRequest, Question }; public enum Impo

如何将表单中的结果合并为一个结果并将结果发布给用户? 我需要从链中设置声明属性,并将完成的SupportRequest发布给用户。 在文档中我看到了Chain.Fold方法,但我不知道如何使用它

我的代码:

public enum SystemSelection { SharePoint, BizTalk, Azure, Office365 };
public enum RequestType { Bug, SupportRequest, Question };
public enum Importance { Blocking, High, Medium, Low };

[Serializable]
class Declaration
{
    public string Type;
    public string Amount;
    public string Date;

    public static IForm<Declaration> BuildForm()
    {
        return new FormBuilder<Declaration>()
                .Message("Add a declaration")
                .Build();
    }
}

[Serializable]
class SupportRequest
{
    public SystemSelection? SystemSelection;
    public RequestType? RequestType;
    public Importance? Importance;
    //need to setup this property
    public Declaration Declaration;

    public static IForm<SupportRequest> BuildForm()
    {
        return new FormBuilder<SupportRequest>()
                .Message("Welcome to the simple support bot!")
                .AddRemainingFields()
                .Build();
    }

    internal static IDialog<SupportRequest> MakeRootDialog()
    {
        var dlg = from x in FormDialog.FromForm(SupportRequest.BuildForm)
                  from y in FormDialog.FromForm(Declaration.BuildForm)
                  select x;
        return dlg;
    }

    internal static IDialog<Declaration> MakeRootDialog2()
    {
        SupportRequest t = null;
        var dlg = Chain.From(() => FormDialog.FromForm(SupportRequest.BuildForm))
        .ContinueWith<SupportRequest, Declaration>(async (ctx, sr) =>
        {
            t = await sr;
            return FormDialog.FromForm(Declaration.BuildForm);
        });

        return dlg;
    }
}
公共枚举系统选择{SharePoint、BizTalk、Azure、Office365};
公共枚举请求类型{Bug,SupportRequest,Question};
公共枚举重要性{阻塞、高、中、低};
[可序列化]
类声明
{
公共字符串类型;
公共字符串数量;
公共字符串日期;
公共静态表单BuildForm()
{
返回新的FormBuilder()
.Message(“添加声明”)
.Build();
}
}
[可序列化]
类支持请求
{
公共系统选择?系统选择;
公共请求类型?请求类型;
公共重要性;
//需要设置此属性
公开声明;
公共静态表单BuildForm()
{
返回新的FormBuilder()
.Message(“欢迎使用简单支持机器人!”)
.AddRemainingFields()
.Build();
}
内部静态IDialog MakeRootDialog()
{
var dlg=FormDialog.FromForm(SupportRequest.BuildForm)中的x
从FormDialog.FromForm(Declaration.BuildForm)中的y开始
选择x;
返回dlg;
}
内部静态IDialog MakeRootDialog2()
{
SupportRequest t=null;
var dlg=Chain.From(()=>FormDialog.FromForm(SupportRequest.BuildForm))
.ContinueWith(异步(ctx,sr)=>
{
t=等待sr;
返回FormDialog.FromForm(Declaration.BuildForm);
});
返回dlg;
}
}

为什么要使用Chain?@EzequielJadib我不知道从用户处获取复杂类型(如声明)值的其他方法-正如我看到的,BotFramework只支持FormFlow中的基本类型。我使用chain调用内部表单从用户处获取数据。你建议另一种方法吗?谢谢,我不确定我是否听了你的话,你是想在第一张表格填好后再打一张表格吗?是的。我想从第二个表单中得到结果,并在第一个表单中设置属性声明。并作为Chain的结果返回已完成的SupportRequest。为什么要使用Chain?@EzequielJadib我不知道从用户处获取复杂类型(如声明)值的另一种方法,因为我看到BotFramework只支持FormFlow中的基元类型。我使用chain调用内部表单从用户处获取数据。你建议另一种方法吗?谢谢,我不确定我是否听了你的话,你是想在第一张表格填好后再打一张表格吗?是的。我想从第二个表单中得到结果,并在第一个表单中设置属性声明。并将已完成的SupportRequest作为链的结果返回。