Swagger не может создать документ при использовании AllOfC#

Место общения программистов C#
Ответить
Anonymous
 Swagger не может создать документ при использовании AllOf

Сообщение Anonymous »

Я использую веб-API ASP.NET Core 8 и Swagger.
Когда я пытаюсь использовать UseAllOfForInheritance для генерации кода с помощью allOf, используя метод следующий код для создания чванства:
builder.Services.AddSwaggerGen(
(opt) =>
{
opt.SupportNonNullableReferenceTypes();

opt.UseAllOfForInheritance();
opt.SelectDiscriminatorNameUsing(type => type.Name);
})

Он показывает мне ошибку, в которой говорится, что он ожидал значения перечисления, даже несмотря на то, что в запросе или его ответе нет перечисления, для которого Swagger пытался сгенерировать элементы.

System.ArgumentException: указанный тип должен быть Enum. (Параметр 'enumType')

Как я могу отследить это, чтобы узнать, что его вызывает? Исключение не сообщает мне имя свойства или какое-либо описание того, что оно пытается сгенерировать, за исключением полного имени класса.
Пример DTO, для которого я пытаюсь создать документ Swagger:
public class SeriesBase
{
public long Id { get; set; }

// DX: Index
public required string Name { get; set; }

public long? CategoryId { get; set; }
}

public class SeriesTable : SeriesBase, ITrackCreate, ITrackUpdate
{
#region ITrack Members

public DateTime CreatedAt { get; set; } = UtcNow;
public DateTime UpdatedAt { get; set; } = UtcNow;

#endregion
}


Я решил эту проблему благодаря Джейсону.
Я обнаружил, что у меня есть общий класс, который принимает только enum, и именно это вызывало проблемы.
Итак, точное решение было таким:
builder.Services.AddSwaggerGen(c =>
{
c.SupportNonNullableReferenceTypes();
c.UseAllOfForInheritance();
c.SelectDiscriminatorNameUsing(type => type.Name); // optional
c.SelectSubTypesUsing(baseType =>
{
return typeof(Program).Assembly.GetTypes().Where(type => !type.IsGeneric && type.BaseType != typeof(Enum) && type.IsSubclassOf(baseType));
});
});


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

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

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

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

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

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