我有這樣的場景:XmlInclude到(反)序列繼承類型在單獨的程序集
namespace MyApp.Animals
{
public class Dog : MyApp.Categories.Canine
...
所以我想序列化/反序列化的狗類。不幸的是,我不能使用[XmlInclude]屬性,因爲通過將它添加到父類(MyApp.Categories.Canine),我需要添加對父類存在的程序集的引用(MyApp.Animals)..然而,由於繼承,子類已經引用父類...所以我們有一個循環引用。
是否有任何實現此目的的最佳實踐方式?我可以通過手動序列化/反序列化父類上存在的屬性來解決這個問題,並且只是在子節點上進行序列化,但這不是很優雅。
盼望一些更好的技巧..
UPDATE:添加到例如響應下面約翰的評論...
我沒有一個完整的代碼示例(我用的工作代碼大規模和複雜的),但問題是,應該去/從xml序列化的一些屬性包含在父類中,該父類與子類不同。
將XmlElement屬性添加到父類不起作用,因爲我們實際上正在對子類進行de/serialization,因此它不會迭代到父級。而且我們不能在父對象上做,因爲我們不能添加對孩子的引用(因爲孩子已經在引用父對象),所以de/serialiser將不知道要對哪個孩子進行操作。
要增加複雜性的一個額外的水平,我與實際上被取消/序列化爲更大的序列的一部分,由父對象的下列財產問題的對象:
[XmlElement("ShippingAddress")]
public Location ShippingAddress
{
get { return _shippingAddress; }
set { _shippingAddress = value; }
}
的問題在於這裏的位置類型是子位置類型。因此,只有子類型的屬性纔會變爲de/serialized ...父類型(也稱爲Location,但在不同的名稱空間中)中的所有屬性都不是。
這是否使它更清晰?
能否請你告訴代碼和生成的XML?目前還不清楚爲什麼你需要'XmlInclude'。 – 2010-06-25 00:42:44
我已經更新了我原來的帖子.. – Jeeby 2010-06-25 01:42:26