NSwag создает дублирующую модель - PullRequest
0 голосов
/ 17 марта 2020

Я использую 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

...