我有以下操作筛选器的代码,它帮助我序列化数组,然后将其发送到FromForm绑定器,我是如何将其变成泛型的,以便我可以获得几个类类型,并将其作为T类型传递给下面的类,因此我编写了以下代码:
public class ArraySettingsOperationFilter<T> where T : IOperationFilter, new()
{
public void Apply(OpenApiOperation operation, OperationFilterContext context)
{
if (operation.RequestBody != null && operation.RequestBody.Content.TryGetValue("multipart/form-data", out var openApiMediaType))
{
var options = new JsonSerializerOptions { WriteIndented = true };
var array = new OpenApiArray
{
new OpenApiString(JsonSerializer.Serialize(new T(),options)),
};
openApiMediaType.Schema.Properties["Competences"].Example = array;
}
}
}
在启动类中,我获取由接口标记的每个类,并将它们传递给Swagger生成器设置中的操作过滤器:
var types = typeof(IMarkerInterface)
.Assembly.GetTypes()
.Where(t => t.IsSubclassOf(typeof(IMarkerInterface)) && !t.IsAbstract)
.Select(t => Activator.CreateInstance(t) as IMarkerInterface).ToList();
然后:
services.AddSwaggerGen(c =>
{
foreach (var type in types)
{
c.OperationFilter<ArraySettingsOperationFilter<type>>(); //however here error says type is a variable but used like a type.
}
});
有人知道如何解决这个问题吗?还是变通办法?