Я использую NSwag для генерации спецификаций OpenApi3 c из моих контроллеров. Я также использую пользовательскую реализацию IDocumentProcessor для генерации моделей, не включенных в контроллеры. Модели постпроцессора совместно используют абстрактные классы с методами контроллера. Кажется, что модели, сгенерированные в IDocumentProcessor, дублируют абстрактные классы. Есть ли способ избежать этого?
Мой IDocumentProcessor:
private class SwaggerDocumentProcessor : IDocumentProcessor
{
public void Process(DocumentProcessorContext context)
{
var assembly = Assembly.GetExecutingAssembly()
.GetReferencedAssemblies()
.FirstOrDefault(a => string.Equals(a.Name, "Api.Model", StringComparison.Ordinal));
if (assembly != null)
{
var loadedAssembly = Assembly.Load(assembly);
var types = loadedAssembly.GetTypes();
foreach (var type in types)
{
if (context.SchemaResolver.HasSchema(type, false)) continue;
if (type.IsClass)
{
context.SchemaGenerator.Generate(new JsonSchema(), type, context.SchemaResolver);
}
}
}
}
}
Из того, что я вижу, кажется, что дубликат добавляется, потому что другой класс имеет абстрактный класс как родовое c ограничение
public class ActivityEvent<TModel> : EventBase where TModel : Activity
![enter image description here](https://i.stack.imgur.com/gKrMe.png)