До сих пор я использовал DataContractJsonSerializer Microsoft для сериализации и десериализации моих бизнес-объектов в объекты передачи данных (DTO), отформатированные как JSON. DTO отмечены атрибутом DataContract. Небольшой пример:(De-) Сериализовать известные типы, похожие на Microsoft
[DataContract(Name = "Geometry", Namespace = "myContract.com/dto")]
[KnownType(typeof(Point))]
[KnownType(typeof(Line))]
public class Geometry
{
}
[DataContract(Name = "Point", Namespace = "myContract.com/dto")]
public class Point : Geometry
{
[DataMember(Name = "x")]
public double X { get; set; }
[DataMember(Name = "y")]
public double Y { get; set; }
}
[DataContract(Name = "Line", Namespace = "myContract.com/dto")]
public class Line: Geometry
{
[DataMember(Name = "start")]
public Point Start { get; set; }
[DataMember(Name = "end")]
public Point End { get; set; }
}
Это получает сериализовать как:
"geometry":{"__type":"Point:myContract.com/dto","x":23133.75569999963,"y":21582.385849999264}
Из-за проблем с производительностью я перешел на Newtonsoft Json.NET. При использовании этого строки JSON выглядит следующим образом:
"geometry":{"$type":"A.B.C.Point, A.B.C","x":23133.75569999963,"y":21582.385849999264}
Есть Есть возможность сериализации объекта с Json.NET в строку Microsoft-соответствие JSON с помощью «__type» и контракт имен вместо «$ типа "и комбинация классов-сборок? Я использую .NET 3.5.
Заранее благодарен!
Спасибо за ваше предложение! Это означало бы, что все мои DTO, наследующие от Entity, будут иметь известный тип.Напротив, Microsoft Serializer устанавливает это свойство только в случае необходимости. Вы видите какой-либо шанс справиться с этим автоматически? – mu88