gabrielbaltazar / gbswagger

72 stars 25 forks source link

Access Violation ao utilizar Schemas TObjectList<T> #31

Closed IagooCesaar closed 1 year ago

IagooCesaar commented 1 year ago

Dados o seguinte cenário:


type
  TMeuObjeto = class
  private
    FCodigo: Integer;
    FNome: String;
  public
    property Codigo: Integer read FCodigo Write FCodigo
    property Nome: String read FNome write FNome
  end;

  TMeuObjetoLista = TObjectList<TMeuObjeto>;

Obtenho um Access Violation ao tentar utilizar o TMeuObjetoLista como um schema. Ex:

  .Path('objeto')
    .GET('Lista de Objetos')
      .AddResponse(Integer(THTTPStatus.OK)).Schema(TMeuObjetoLista).&End

A questão parece estar neste método FindType

image

IagooCesaar commented 1 year ago

Percebi que há uma função implementada na interface IGBSwaggerPathResponse para permitir informar que trata-se de uma lista de objetos.

Interface IGBSwaggerPathResponse

Desta forma, ao invés de fazer assim:

  .Path('objeto')
    .GET('Lista de Objetos')
      .AddResponse(Integer(THTTPStatus.OK)).Schema(TMeuObjetoLista).&End

o indicado seria:

  .Path('objeto')
    .GET('Lista de Objetos')
      .AddResponse(Integer(THTTPStatus.OK)).Schema(TMeuObjeto).IsArray(true).&End