C# 同一项目中Azure函数以外的函数中的输入绑定

C# 同一项目中Azure函数以外的函数中的输入绑定,c#,azure,.net-core,azure-functions,C#,Azure,.net Core,Azure Functions,我有一个VisualStudioAzure函数项目,包含许多函数。其中大多数都需要基于Azure存储表实体计算某些值的逻辑 我可以在每个Azure函数中轻松地将输入绑定到该实体: [FunctionName("Function1")] public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post&qu

我有一个VisualStudioAzure函数项目,包含许多函数。其中大多数都需要基于Azure存储表实体计算某些值的逻辑

我可以在每个Azure函数中轻松地将输入绑定到该实体:

[FunctionName("Function1")]
public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, [Table("Table", "SomeValue", "SomeOtherValue")] MyPoco poco, ILogger log)
{
    // some logic based on poco object
}
  • 只能在Azure函数中进行输入绑定吗
  • 如果第一个函数为true,我如何在
    DoTheLogic
    函数中引用Azure表
  • 同样,DoTheLogic功能是否可以使用
    ILogger日志

  • 我能看到的唯一解决方案是将
    poco
    log
    从每个Azure函数传递到
    DoTheLogic
    ,但这看起来不太好。

    根据我的意见回复:

    只能在Azure函数中进行输入绑定吗

    我相信它只能在Azure函数中完成,因为绑定是由Azure函数框架注入的
    ExtensionConfigContext
    ,这在正常函数中是不可用的

    如果第一个是true,我如何在DoTheLogic函数中引用Azure表

    我同意传递
    poco
    对象是正确的选择,它使您的方法与处理passs参数一样纯净

    同样,ILogger日志是否可以由DoTheLogic函数使用


    是的,ILogger应在
    DoTheLogic
    中使用。但是,我建议在包含
    DoTheLogic
    方法的类中插入
    ILogger
    ,而不是传递它。这样,你就有了关注的隔离。如实现中所示。

    您能否解释为什么传递
    poco
    对象是最好的选择,同时建议注入
    ILogger
    而不是将
    log
    对象传递到
    DoTheLogic
    中?其次,您能否演示如何将
    ILogger'注入到
    DoTheLogic`。所有这些都是在Azure功能项目的上下文中进行的。日志记录是一个贯穿各领域的问题,
    DoTheLogic
    方法不要求接受它作为参数,并将其作为参数进行计算。考虑一个场景:<代码> dothoLogic < /代码>正在调用<代码> doTeloGIC1<代码>,它调用<代码> doTeloGIC2<代码> WHRE >代码> doToRoic < /Cord>将对象转换为<代码> dotSeloGIC1所需的新对象,调用它;因此,在本例中,
    DoTheLogic
    完全作为纯函数工作,即使在调用下游方法时也能处理传递的参数。是使用依赖项注入的Azure函数项目的上下文。您可以通过查看了解DI是如何设置的,ILogger是如何注入到
    ToDoItemsService
    中的。
    public static int DoTheLogic([Table("Table", "SomeValue", "SomeOtherValue")] MyPoco poco)
    {
        // some logic based on poco object
        // and return int value to calling Azure Function
    }