什么是 IBinding 接口中带有两个参数的 BindAsync 方法

What is a BindAsync method with two params in the IBinding interface

在 Azure WebJobs SDK 中,我们有 IBinding 接口。这个接口有一个方法 BindAsync 有两个参数,但我不明白第一个参数是什么 object value 以及什么时候调用这个重载方法。 与 ITriggerBinding 接口相关的相同问题。

我尝试在SDK代码源中寻找答案。我知道 BindingSource 包含一个参数字典,其中键是参数名称,值是将提供给 BindAsync 方法的参数值,但我不明白这些参数是什么以及它们在哪里来自哪里?

更新

IBinding.BindAsync方法ReturnsTask<IValueProvider>.

IBinding.BindAsync的用法。

Microsoft.Azure.WebJobs.Host.Bindings.IBinding.BindAsync(Microsoft.Azure.WebJobs.Host.Bindings.BindingContext)

示例代码

public async Task BindAsync_String()
{
    ParameterInfo parameterInfo = GetType().GetMethod("TestStringFunction").GetParameters()[0];
    HttpTriggerAttributeBindingProvider.HttpTriggerBinding binding = new HttpTriggerAttributeBindingProvider.HttpTriggerBinding(new HttpTriggerAttribute(), parameterInfo, false);

    HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "http://functions/myfunc?code=abc123");
    request.Content = new StringContent("This is a test");
    request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/text");

    FunctionBindingContext functionContext = new FunctionBindingContext(Guid.NewGuid(), CancellationToken.None, new TestTraceWriter(TraceLevel.Verbose));
    ValueBindingContext context = new ValueBindingContext(functionContext, CancellationToken.None);
    ITriggerData triggerData = await binding.BindAsync(request, context);

    Assert.Equal(0, triggerData.BindingData.Count);

    string result = (string)triggerData.ValueProvider.GetValue();
    Assert.Equal("This is a test", result);
}

从示例代码 (HttpTrigger) 中,您会发现 requestcontext。它们是 BindAsync 中的两个参数。你会知道BindAsync.

的用法