Microsoft.aspnetcore.openapi не генерирует ссылку типа для идентичных списков в том же классеC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Microsoft.aspnetcore.openapi не генерирует ссылку типа для идентичных списков в том же классе

Сообщение Anonymous »

У меня есть проблема с поколением OpenAPI моих классов C#. Я проиллюстрирую примером: < /p>

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

// program.cs
using Microsoft.AspNetCore.Http.HttpResults;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddOpenApi();

var app = builder.Build();
app.MapOpenApi();
app.MapGet("/balance", GetBalance);
app.Run();

return;

Ok GetBalance()
{
var balance = new Balance(
[
new BalanceEntry("Cash", 1000),
new BalanceEntry("Stocks", 4000)
],
[
new BalanceEntry("Credit Card", 2000),
new BalanceEntry("Loan", 3000)
]
);

return TypedResults.Ok(balance);
}

public record BalanceEntry(string AccountName, decimal Amount);

public record Balance(List Assets, List Liabilities);
< /code>
Как видите, я возвращаю экземпляр баланса с двумя списками того же типа, один для активов, один для обязательств.Liabilities
) не получает $ ref , указывающий тип элементов в нем, как вы можете видеть в фрагменте сгенерированного документа OpenAPI ниже.

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

...
"Balance": {
"required": [
"assets",
"liabilities"
],
"type": "object",
"properties": {
"assets": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BalanceEntry"
}
},
"liabilities": {
"type": "array",
"items": { }
}
}
},
...
< /code>
Я попытался изменить записи на классы, это не помогло. If I swap the order of the Assets
and Liabilities properties, it is again the last one that does not get the $ref.



Item
Version
< /tr>
< /thead>


.net sdk < /td>
td>99.0.300
< /tr>

microsoft.aspnecor. />9.0.7
< /tr>

microsoft.openapi (неявт через microsoft.aspnetcore.openapi) < /td>
1.17>

>

Подробнее здесь: https://stackoverflow.com/questions/797 ... tical-list
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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