Типы ссылок с возможностью обнуления в интерфейсе командной строки swashbuckle и nswag в .net

#c# #asp.net-core #swagger #swashbuckle #nswag

Вопрос:

Я использую dotnet swagger cli, чтобы создать файл определения swagger для ASP.NET 5.0 веб-api и использование nswag для создания клиентских классов C#, но я столкнулся с проблемой. Я хочу, чтобы все мои ссылочные типы были обнуляемыми, если только они не помечены как Обязательные. Для моих примитивных полей он просто следует за конвейерами C#, независимо от того, может ли он быть обнулен или нет, но мои ссылки не помечаются nullable:true в определении swagger.

Вместо этого я попытался сериализоваться как V2, но тогда это просто делает все недействительным, чего я тоже не хочу.

Прямо сейчас я использую следующую команду CLI:

 dotnet swagger tofile --serializeasv2 --output $(MSBuildProjectDirectory)nswagswagger.json project.dll v1" ConsoleToMSBuild="true" WorkingDirectory="$(OutputPath)"
 

Комментарии:

1. Не могли бы вы привести пример команды swagger cli, которую вы использовали?

2. @AndrewSilver Обновил сообщение

3. > Я хочу, чтобы все мои ссылочные типы были обнуляемыми, если только они не помечены как Обязательные. Могу я спросить, почему?

Ответ №1:

Ну, я не знаю, как реализовать именно то поведение, о котором вы упомянули.
Будет ли достаточно, чтобы свойства, допускающие обнуление, в проекте API оставались неизменными(обнуляемыми) в сгенерированном коде?

Для этого вы можете добавить это в свой проект API

 services.AddSwaggerGen(c =>
{
    c.UseAllOfToExtendReferenceSchemas();
 

а затем включите следующую опцию в генераторе NSwag: generateNullableReferenceTypes=true .

Этот параметр выглядит как «Создать тип ссылки с возможностью обнуления…» в разделе «Классы DTO» в пользовательском интерфейсе NswagStudio.

Я думаю, что этот подход также должен работать с swagger cli