Полиморфизм типов, которые я не контролирую с помощью NSwag/NJsonSchema

Этот вопрос и ответ демонстрируют наследование с JsonInheritanceConverter,

Однако что, если я не владею (или не могу изменить) типами в соответствующей иерархии наследования?

Учти это:

// LibAssembly (cannot change)

[DataContract]
[KnownType(nameof(CommonThingBase.GetKnownTypes))]
public abstract class CommonThingBase
{ 
    public static IEnumerable<Type> GetKnownTypes() { /* works as expected */ }
}

[DataContract]
public class ACommonThing : CommonThingBase { }

[DataContract]
public class BCommonThing : CommonThingBase { }

И это:

// ApiAssembly (mine, references LibAssembly)

public class ViewModelThing
{
    public CommonThingBase CommonThing { get; }
}

public class CommonThingController : ApiController
{
    [HttpGet]
    [Route("/CommonThing")]
    [ResponseType(typeof(ViewModelThing))]
    public IHttpActionResult GetCommonThing() { /* works as expected */ }
}

Предполагая, что я не владею (или не могу изменить) CommonThingBase и это производные типы в LibAssembly Как я могу создать схему Swagger, которая включает в себя производные типы CommonThingBase?

С помощью WebApiToSwaggerGenerator из коробки на CommonThingController не создает схему, которая включает в себя ACommonThing, BCommonThing или любой другой производный тип.

0 ответов

Другие вопросы по тегам