你能在vb.net?

时间:2017-11-07 16:43:22

标签: asp.net vb.net botframework

我在vb.net项目的https://docs.microsoft.com/en-us/bot-framework/dotnet/bot-builder-dotnet-formflow教程之后遇到了一个问题。

特别围绕"将表单连接到框架"存在以下代码的地方。

internal static IDialog<SandwichOrder> MakeRootDialog()
{
    return Chain.From(() => FormDialog.FromForm(SandwichOrder.BuildForm));
}

我在我的vb.net中有哪些

Friend Shared Function MakeRootDialog() As IDialog(Of SandwichOrder)
    Return Chain.From(Function() FormDialog.FromForm(Of IForm(Of SandwichOrder))(SandwichOrder.BuildForm))
End Function

突出显示的错误是FromForm

  

必须有一个公共无参数实例构造函数来满足&#39; New&#39;类型参数的约束&#39; T&#39;。

这对我来说很有意义,因为IForm显然有。

  

受保护的子新()

我经常不会#,但我无法弄清楚它为什么在那里工作并且没有返回相同的错误,特别是因为c#中的构造函数是。

  

受保护的IForm();

我认为我正在创建一个新的课程实例,在c#中我们不是......但我无法弄清楚为什么会这样。< / p>

有人有线索吗?

修改

在c#中,以下工作

return Chain.From(() => FormDialog.FromForm(SandwichOrder.BuildForm));

以下情况并非如此,即使它们相同但具有正确的类型参数。

        return Chain.From(() => FormDialog.FromForm<IForm<SandwichOrder>>(SandwichOrder.BuildForm));

我没有使用等效的vb

Return Chain.From(Function() FormDialog.FromForm(SandwichOrder.BuildForm))

我是否收到以下错误。

  方法中的

类型参数不能从这些参数中推断出来。明确指定数据类型可能会纠正此错误。

我按照说明操作,这显然导致了上面的错误,可能是一个红色的鲱鱼。显然,我还有另外一个问题需要弄清楚,为什么在vb.net中它认为函数的返回并不相同。

Buildform非常简单,只是。

Public Shared Function BuildForm() As IForm(Of SandwichOrder)
    Return New FormBuilder(Of SandwichOrder)().Message("Welcome to the simple sandwich order bot!").Build()
End Function

1 个答案:

答案 0 :(得分:0)

想出来。

问题是BuildFormDeligate - 没有隐式返回FromForm的预期类型。解决方案是简单地创建对象并将其传入。奇怪的是因为我不需要在c#中执行此操作但是嘿嘿。

Dim BuildFormDeligate As New BuildFormDelegate(Of SandwichOrder)(AddressOf SandwichOrder.BuildForm)

Return Chain.From(Function() FormDialog.FromForm(BuildFormDeligate))