2014-07-07 14 views
5

From this answer Mam klasę JsonCreationConverter<T> i niektóre implementacje dla konkretnych typów. Ale ta klasa abstrakcyjna pomija implementację metody WriteJson.JSON.NET: JsonCreationConverter działająca implementacja WriteJson

w Internecie znajdę kod:

public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) 
{ 
    //use the default serialization - it works fine 
    serializer.Serialize(writer, value); 
} 

Ale ten kod kończy się StackOverflowException jak to nazywa się cały czas (oczywiście). Inne rozwiązania dotyczyły implementacji obiektów betonowych z serializacją wszystkich wartości jeden po drugim. Naprawdę chcę tego uniknąć, po prostu chcę użyć domyślnej serializacji, co jest dla mnie w porządku. Aby uniknąć wywoływania mojego JsonConvertera w celu serializacji. Potrzebuję go tylko do deserializacji. Czy to możliwe? W jaki sposób?

Odpowiedz

9

Spróbuj przesłonić getter właściwości CanWrite w konwerterze, aby powrócił false. Zapobiegnie to używaniu konwertera podczas serializacji.

public override bool CanWrite 
    { 
     get { return false; } 
    } 
+0

Dzięki. Czuję się zawstydzony, że nie znalazłem tego samego :-). – Zoka

+0

Bez obaw. Cieszę się, że mogłem pomóc. –

+0

Jesteś świętym. – Dagrooms