我有一堆域對象,我序列化,發送到其他應用程序,然後反序列化使用Json.Net
。這些對象可具有屬性是動態屬性忽略類型而不修改類?
- 定義爲抽象基類與多個派生類
- 動態屬性
我用TypeNameHandling.Auto
,它增加了$type
屬性,從不同類型的聲明的類型。但是,此設置對我的動態屬性有不良副作用,即它們的類型也會被聲明。
在下面的示例中,model
是在我的C#代碼中定義爲public dynamic Model { get; set; }
的動態屬性。
"model":{"$type":"<>f__AnonymousType0`3[[System.String, mscorlib],[System.String, mscorlib],[System.String, mscorlib]], ExampleAssembly","link":"http://www.google.com","name":"John"}
當嘗試反序列化這個字符串在另一個組件,Json.Net不能(當然)找到ExampleAssembly
。使用TypeNameHandling.None
屬性賦予以下屬性系列化
"model": {"link":"http://www.google.com","name":"John"}
哪些可以成功反序列化到dynamic
。但是,這會打破派生類型的反序列化。
有關如何在不實現自定義IContractResolver
及其他自定義代碼的情況下如何使其工作的任何想法?
我沒有自己的領域對象,所以我不能裝飾他們或他們的屬性與屬性或允許他們實現接口等我在找什麼是某種設置在序列化器中省略類型爲dynamics
。
恕我直言,這應該可以通過設置配置不知何故,我只是沒有找到它。
[JsonIgnore]或有條件序列化(http://www.newtonsoft.com /json/help/html/conditionalproperties.htm)可能會有用 – Nair
@Nair:謝謝,但不幸的不是。我不擁有域對象,不能用屬性或方法修飾。此外,這不能很好地擴展,因爲我必須對所有對象都這樣做。 – pardahlman
將'[JsonProperty(TypeNameHandling = TypeNameHandling.None)]'添加到相關的屬性將是最直接的方式 - 但在您的評論中,你說你不能這樣做。你可能想編輯這個問題來澄清這個要求。 – dbc