Skonfiguruj JSON.NET, aby ignorować atrybuty DataContract / DataMember

Mamy do czynienia z sytuacją w projekcie MVC3 z serializatorami Microsoft JSON i JSON.NET.

Wszyscy wiedzą, że w serializatorach Microsoftu są w zasadzie złamane DateTime, więc zmieniliśmy JSON.NET, aby uniknąć tego problemu. To działa świetnie, z wyjątkiem tego, że niektóre klasy, które próbujemy serializować, to POCO z atrybutami DataContract / DataMember. Są one zdefiniowane w zespole, do którego odwołuje się wiele miejsc. Dodatkowo mają inne właściwości wyświetlania, które nie są oznaczone jako DataMembers dla wydajności. Na przykład klient

[DataContract]
public class Customer
{
   [DataMember]
   public string FirstName { get; set;}
   [DataMember]
   public string LastName { get; set;}
   public string FullName 
   {
       get
       {  return FirstName + " " + LastName; }
   }

}

Gdy ten klient jest przekazywany przez WCF, strona klienta może odwoływać się do tego zespołu i używać nazwy FullName w porządku, ale po serializacji z JSON.NET widzi, że FullName nie jest[DataMember] i nie serializuje. Czy istnieje opcja przejścia do JSON.NET, aby poinformować go o zignorowaniu faktu, że klasa ma[DataContract] zastosowany atrybut?

Uwaga: Użycie JavaScriptSerializer w .NET działa dobrze dla właściwości FullName, ale DateTimes są zepsute. Potrzebuję JSON.NET, aby zignorować fakt, że ta klasa ma atrybuty DataContract / DataMember i po prostu wykonuje standardową serializację publicznych pól, tak jakby nie istniały.

questionAnswers(6)

yourAnswerToTheQuestion