我正在尝试使用异步函数返回可枚举值。
我在将返回的数据类型值转换为“main”方法时遇到问题,因为其中进行了异步调用。我不断实施建议的更改和我在网上阅读的内容,但每次我进行更改时,Visual Studio 都不喜欢我所做的其他操作,然后我必须返回。
错误出现在“ListOfLambdas”函数上。具体来说,就是在“收益率回报”线上。错误编号为 [CS0029][1]
你想做什么? 我希望捕获一个列表/可迭代值,然后我可以传递该值并进行其他工作。
public void FunctionHandler()
{
IAsyncEnumerable<AWSLambda> returnedListOfLambdas = ListOfLambdas();
}
private async IAsyncEnumerable<AWSLambda> ListOfLambdas()
{
//Instantiating Client:
var lambdaClient = new AmazonLambdaClient();
//Instantiating New Lambda List:
List<AWSLambda> list = null;
//Getting List
var response = await lambdaClient.ListFunctionsAsync();
response.Functions.ForEach(function =>
{
AWSLambda aWSLambda = MapLambda(function);
if(list == null)
{
list = new List<AWSLambda>();
}
list.Add(aWSLambda);
});
yield return list; //Here is our error.
}
private static AWSLambda MapLambda(FunctionConfiguration function)
{
AWSLambda lambdaToBeAdded = new AWSLambda();
lambdaToBeAdded.FunctionName = function.FunctionName.ToString();
lambdaToBeAdded.FunctionARN = function.FunctionArn.ToString();
lambdaToBeAdded.FunctionDescription = function.FunctionName.ToString();
lambdaToBeAdded.FunctionRunTime = function.Runtime.ToString();
lambdaToBeAdded.FunctionMemorySize = function.MemorySize.ToString();
lambdaToBeAdded.FunctionTimeout = function.Timeout.ToString();
lambdaToBeAdded.FunctionHandler = function.Handler.ToString();
return lambdaToBeAdded;
}
我收到的错误具体是“无法将类型 'System.Collections.Generic.List
但这对我来说似乎很奇怪。我认为很明显“列表”变量不是那种数据类型。我缺少什么? [1]:https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-messages/cs0029?f1url=%3FappId%3Droslyn%26k%3Dk(CS0029)
List<AWSLambda> list = null;
正是 System.Collections.Generic.List<saveFileS3.AWSLambda>
,因此当您尝试返回 AWSLambda
时编译器会抱怨。
你需要一个带有嵌套yield返回的foreach:
foreach (var lambda in list)
yield return lambda;