C# 同一项目中Azure函数以外的函数中的输入绑定
我有一个VisualStudioAzure函数项目,包含许多函数。其中大多数都需要基于Azure存储表实体计算某些值的逻辑 我可以在每个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
[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
}
DoTheLogic
函数中引用Azure表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
}