.NET Azure Functions 中的依赖注入 - Azure Cosmos DB 客户端

问题描述 投票:0回答:1

我在 Microsoft Docs 上阅读了一篇有关在 .NET Azure Functions 中使用依赖注入的文章。 一切正常,正如您在文章中看到的,它注册了 CosmosClient

builder.Services.AddSingleton((s) => { return new CosmosClient(Environment.GetEnvironmentVariable("COSMOSDB_CONNECTIONSTRING")); });

问题是,如何在我的函数中使用 Cosmos Client?
我不想每次都创建 Cosmos 客户端实例。

public class CosmosDbFunction { public CosmosDbFunction() { } [FunctionName("CosmosDbFunction")] public async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log) { // TODO: do something later return null; } }

	
azure dependency-injection azure-functions azure-cosmosdb
1个回答
10
投票
使用界面。 您可以直接注入

CosmosClient

Cosmos 客户端示例目录中有一个示例

,其中包含以下代码:

private CosmosClient cosmosClient; public AzureFunctionsCosmosClient(CosmosClient cosmosClient) { this.cosmosClient = cosmosClient; }

对于测试,创建此客户端的团队似乎已经决定采用将所有内容抽象/虚拟的方法,以允许模拟框架根据需要覆盖方法。 这在
issue #303
中有所涉及。 另请参阅 Stack Overflow:

如何在没有接口的情况下模拟类?

© www.soinside.com 2019 - 2024. All rights reserved.