如何为 OpenApi header 设置字符串列表

How can I set a list of string for an OpenApi header

我正在向 Swagger-UI 添加语言 header 并尝试将其作为 drop-down 列表。出于某种原因,它一直给我一个转换错误。 这是相关代码:

 public void Apply(OpenApiOperation operation, OperationFilterContext context)
        {
            if (operation.Parameters == null)
                operation.Parameters = new List<OpenApiParameter>();

            var enumList = (_serviceProvider.GetService(typeof(IOptions<RequestLocalizationOptions>)) as IOptions<RequestLocalizationOptions>)?
                        .Value?.SupportedCultures?.Select(c => new OpenApiString(c.TwoLetterISOLanguageName)).ToList();

            operation.Parameters.Add(new OpenApiParameter
            {
                Name = "Accept-Language",
                In = ParameterLocation.Header, // "header",
                Description = "Supported languages",
                Schema = new OpenApiSchema
                {   
                    Default = new OpenApiString("en"), 
                    Type = "string"


                    //TODO: Can't get this conversion to work and I don't know why...
                    ,
                    Enum = (IList<IOpenApiAny>)enumList

                },
                Required = false
            }) ;
        }

这是我遇到的错误(在运行时):

Unable to cast object of type 'System.Collections.Generic.List[Microsoft.OpenApi.Any.OpenApiString]' to type 'System.Collections.Generic.IList[Microsoft.OpenApi.Any.IOpenApiAny]'.

没有 enum,一切正常,header 在 Swagger UI 中的每个请求中显示为默认的文本框。

我花了几个小时试图在文档中找到答案,但我找不到。

好的,我明白了。

var enumList = (_serviceProvider.GetService(typeof(IOptions<RequestLocalizationOptions>)) as IOptions<RequestLocalizationOptions>)?
                        .Value?.SupportedCultures?.Select(c => OpenApiAnyFactory.CreateFor(new OpenApiSchema() { Type = "string" }, c.Name)).ToList();