2
有沒有辦法在使用反序列化時獲取$ type屬性?我使用TypeNameHandling進行序列化,但是當我反序列化時,我沒有包含類型信息的程序集。我需要使用類型名稱將其存儲在正確的集合中,它看起來像$ type不會傳遞給JObject。反序列化到JObject時獲取類型名稱
編輯:如果我反序列化爲一個JObject,我可以得到$類型,但是如果我反序列化爲具有對象作爲屬性的類,則類型爲null。不知道爲什麼它的json中存在$ type。下面的例子:
類
public class Container {
public object Test { get; set; }
}
而且deserilization代碼
var container = new Container {
Test = new Snarfblat()
};
var json = JsonConvert.SerializeObject(container,
new JsonSerializerSettings {
TypeNameHandling = TypeNameHandling.Objects
});
var deserializedContainer = JsonConvert.DeserializeObject<Container>(json);
var type = ((JObject) deserializedContainer.Test)["$type"];
// Type is null
var deserializedContainer2 = JsonConvert.DeserializeObject<JObject>(json);
var type2 = deserializedContainer2["Test"]["$type"];
// Type is snarfblat
有趣的是,我能夠獲得類型,如果我反序列化爲JObject而不是包含對象的類。查看我的更新。 –