mam typu, że nie kontrolują z wielu konstruktorów, co odpowiada tej jednej:Nie deserializacji klas z wielu konstruktorów z Json.NET
public class MyClass
{
private readonly string _property;
private MyClass()
{
Console.WriteLine("We don't want this one to be called.");
}
public MyClass(string property)
{
_property = property;
}
public MyClass(object obj) : this(obj.ToString()) {}
public string Property
{
get { return _property; }
}
}
Teraz, gdy próbuję go deserializowania, prywatny bez parametrów jest wywoływany, a właściwość nigdy nie jest ustawiona. Test:
[Test]
public void MyClassSerializes()
{
MyClass expected = new MyClass("test");
string output = JsonConvert.SerializeObject(expected);
MyClass actual = JsonConvert.DeserializeObject<MyClass>(output);
Assert.AreEqual(expected.Property, actual.Property);
}
daje następujący wynik:
We don't want this one to be called.
Expected: "test"
But was: null
Jak mogę to naprawić, bez zmiany definicji MyClass
? Ponadto ten typ jest kluczem głęboko w definicji obiektów, które naprawdę muszę serializować.
Dzięki, niestety, jak napisałem w pytaniu, nie mogę zmienić klasę. – Grzenio
Następnie myślę, że potrzebujesz stworzyć CustomJsonConverter. To nie jest coś, co zrobiłem Obawiam się. –
Spróbuj wyszukać tutaj: http://stackoverflow.com/a/8312048/234415 –