我使用Json.NET 在此首先看序列化XNA矩形:與Json.NET
using System.Drawing;
string json = JsonConvert.SerializeObject(new Rectangle(-3,6,32,32), Formatting.Indented);
Console.WriteLine(json);
Rectangle deserializedRectangle = JsonConvert.DeserializeObject<Rectangle>(json);
一切正常。控制檯輸出是:「3,6,32,32」
但是當我想用the XNA Rectangle做同樣的事情時,出現錯誤。 (只是與此使用代替了舊的 「使用Microsoft.Xna.Framework;」)
控制檯輸出是: 「{X:-3 Y:6寬度:32身高:32}」
和它引發的錯誤是:「錯誤轉換值」{X:-3 Y:6 Width:32 Height:32}「鍵入'Microsoft.Xna.Framework.Rectangle'」。
爲什麼會發生這種情況?
怎麼回事,我該如何解決這個問題?
嘗試從源,以便建立Json.NET您可以查看在調試器正在拋出的異常。對#1的回答:似乎很清楚,它使用其「ToString」方法轉換「Rectangle」,而不是提取各個成員值,並且沒有方法將其轉換回來。我可能會猜測Json.NET使用public get/set屬性(如'System.Drawing.Rectangle'),並且不會「看到」Microsoft.Xna.Framework.Rectangle的public * fields *。 –