воскресенье, 19 мая 2013 г.

ServiceStack и сериализация struct


Столкнулся с такой проблемой: при сериализации ServiceStack'ом .NET структур, вместо значений свойств в Json формате после сериализации получал название типа данных данной структуры.
 public struct Point
 {
  public int X { get; set;}
  public int Y { get; set;}
 }

 Point p = new Point (){X=10,Y=20};
 JsonSerializer.SerializeToString<Point> (p);
получал "MyNameSpace.Point" вместо "{X=10,Y=20}". В описании сериализатора ServiceStack есть заметка, что структуры сериализуются с помощью метода ToString(), но писать для каждой структуры свой сериализатор в ToString() - это чересчур. Но, к счастью, нашлось решение. Оказалось, что достаточно добавить строчку
 JsConfig<Point>.TreatValueAsRefType = true;
После чего сериализация стала работать как ожидается.