typechat.net icon indicating copy to clipboard operation
typechat.net copied to clipboard

IEnumerable<T> not handled

Open guyrt opened this issue 1 year ago • 1 comments

Common practice is to define a class like this

public sealed class Pizza
{
   public IEnumerable<string> Toppings { get; set; }

   public string Size {get; set;}
}

Typechat.net will fail on the IEnumerable with the argument System.ArgumentException: 'IEnumerable`1 must be a class'. JSON serdes in .net know to model the IEnumerable as a JSON array. Can typechat do the same?

guyrt avatar Jun 25 '24 23:06 guyrt

If you swap to a List, you get an unnecessary interface that doesn't appear in a string[]:

interface Pizza {
  Toppings: List_String;
  Size: string;
}
interface List_String {
  Capacity: number;
  Count: number;
  Item?: string;
}

I would think the ideal implementation for all IEnumerables<T> that naturally translate to a JSON array is to return something like T[] where T is defined inline for simple types.

guyrt avatar Jun 25 '24 23:06 guyrt