Serialización JSON de genéricos

Tengo una clase que se veía así:

public class MyData : IList<Tuple<double,double>>

La idea es que tengas una lista de pares de valores. Suficientemente simple. Pero quería que esto se serializara de tal manera que pareciera una matriz de una matriz de dobles (es decir,double[][]) en lugar de una lista de tuplas. Debería verse así cuando se serializa:

[[1,1],[2,2],[3,3]]

Así que creé un simpleJsonConverter que lo hare Tiene una muy simpleWriteJson Método que se ve así:

public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
    var obj = value as MyData;
    double[][] dataArray = (from dp in obj._data
                            select new[] { dp.Item1, dp.Item2 }).ToArray();
    var ser = new JsonSerializer();
    ser.Serialize(writer, dataArray);
}

Y decoroMyData con el atributo apropiado:

    [JsonConverter(typeof(MyDataJsonConverter))]
    public class MyData: IList<Tuple<double,double>>

Y todo funciona bien. Ahora sin embargo, quiero extender esto y hacerMyData genérico:

    public class MyData<S,T>: IList<Tuple<S,T>>

Y esto es donde me encuentro con problemas. Inicialmente, traté de hacerMyDataJsonConverter también genérico:

   [JsonConverter(typeof(MyDataJsonConverter<S,T>))]
   public class MyData<S,T>: IList<Tuple<S,T>>

Pero eso no está permitido porque no puedes usar genéricos con atributos.

Así que tengo que seguirMyDataJsonConverter no genérico, pero tengo que averiguar cómo aplanar mi colección de tuplas en una matriz (probablemente deobject[][] ahora) tal que cuando serialice mis datos se vería así:

[[1,2],[2,3]]

o:

[["foo":1],["bar":2]]

o incluso:

[["foo":"bar"],["what":"ever"]]

¿Alguna idea sobre cómo manejarlo? EnWriteJson, Ya no puedo lanzarvalue aMyData porque no sabré los parámetros de tipo, así que todo se desmorona en ese punto.

Podría crear clases separadas para cada tipo de combinación (así que una paraTuple<double,double> y uno paraTuple<string,double> y así sucesivamente ...), pero me preguntaba si había una mejor manera antes de que fuera a la fuerza bruta.

Respuestas a la pregunta(2)

Su respuesta a la pregunta