Swashbuckle.AspNetCore.SwaggerGen ISchemaGenerator.GenerateSchema создает пустую схему.C#

Место общения программистов C#
Ответить
Anonymous
 Swashbuckle.AspNetCore.SwaggerGen ISchemaGenerator.GenerateSchema создает пустую схему.

Сообщение Anonymous »

Я использую Swashbuckle.AspNetCore.Swagger 6.6.2 в службе .NET 8 с пользовательским IOperationFilter для создания примеров запросов для моего API. В моем фильтре я пытаюсь вручную создать схему для типов, которые не находятся в моем SchemaRepository, используя метод ISchemaGenerator.GenerateSchema(Type modelType, SchemaRepository SchemaRepository), но сгенерированную вручную схему для тип всегда пуст, без заполненных свойств.
Вот как я генерирую схему:

Код: Выделить всё

private OpenApiSchema GenerateSpecializedSchema(Type modelType, SchemaRepository schemaRepository, ISchemaGenerator schemaGenerator)
{
OpenApiSchema schema = schemaGenerator.GenerateSchema(modelType, schemaRepository);
// Schema is empty at this point
return schema;
}
Используя его в моем пользовательском фильтре IOperationFilter

Код: Выделить всё

public class MyCustomOperationFilter : IOperationFilter
{
public void Apply(OpenApiOperation operation, OperationFilterContext context)
{
// Retrieve the exact type I want from a custom attribute (details omitted for simplicity)
var modelType = ...;

// Generate the schema for the specified type
var schema = GenerateSpecializedSchema(modelType, context.SchemaRepository, context.SchemaGenerator);
}
}

Пример типа класса, для которого я пытаюсь создать схему, выглядит следующим образом:

Код: Выделить всё

public class MyClassExample
{
public string PropertyA { get; set; }
public string PropertyB { get; set; }
}
Когда я проверяю сгенерированную схему, она пуста — это означает, что внутри нет никаких свойств. Однако MyClassExample — это простой POCO с несколькими общедоступными свойствами, и я ожидаю, что эти свойства появятся в сгенерированной схеме.
Полученный файл OAS JSON выглядит следующим образом: МойКлассПример:

Код: Выделить всё

 ...
"components": {
"schemas": {
"MyClassExample": {}
...
}
...
Что я пробовал:
  • Я отладил код, и кажется, что ISchemaGenerator.GenerateSchema возвращает результат пустая OpenApiSchema без каких-либо свойств.
  • Я проверил, что modelType правильный и указывает на MyClassExample.
  • Я проверил, что тип общедоступный и доступный.
Я ожидаю получить схему со свойствами типа модели.

Подробнее здесь: https://stackoverflow.com/questions/790 ... rates-an-e
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»