Я пытаюсь сгенерировать Swagger JSON для моего веб-API, который разработан в c # с использованием Swashbuckle.Есть случай, когда одно свойство объекта моего возвращаемого типа может быть полиморфным на основе значения строки / перечисления в содержащем объект (дискриминатор).Когда я просмотрел документацию и другие онлайн-справки, выяснилось, что мы можем поддерживать полиморфизм, основанный на свойстве одного и того же объекта, но не содержащий объекта.Ниже приведен пример моего ответа API.Поддерживается ли этот сценарий в спецификации OpenAPI?Я прочитал о свойстве OneOf, которое представлено в Swagger 3.0, и мне интересно, это решение, которое я должен использовать?если да, можем ли мы использовать OneOf с дискриминатором?
В приведенном ниже примере кода, основанном на перечислении DeviceType, DeviceProperties могут быть либо ABCDeviceProperties, либо XYZDeviceProperties.Можно ли создать swagger для API, который возвращает или принимает «Устройство»?
public enum DeviceType {ABC, XYZ }
public class Device
{
public string Id { get; set; }
public string Name { get; set; }
public string SerialNumber { get; set; }
public DeviceType Type { get; set; }
public DeviceProperties Properties { get; set; }
}
public class DeviceProperties
{
public string MemorySize { get; set; }
}
public class ABCDeviceProperties : DeviceProperties
{
public string Abc { get; set; }
}
public class XYZDeviceProperties : DeviceProperties
{
public string Xyz { get; set; }
}