通常,數據結構不是嚴格分層的。例如,考慮一個團隊,包括球員和標記的那些玩家作爲隊長之一:在XML序列化中混合嵌套元素和引用元素
如果我想序列化這個模型到XML的一個實例,我希望像一些結構:
<Team id="team1">
<Players>
<Player id="player1"/>
<Player id="player2"/>
<Player id="player3"/>
<Player id="player4"/>
</Players>
<Captain ref="player3"/>
</Team>
也就是說,聚集被序列化爲嵌套元素,並且定向關聯被序列化爲對id的引用。
我想實現這個從C#代碼,而無需編寫自定義XML序列化,最好是剛加入的屬性,喜歡的東西:
class Team
{
public List<Player> Players { get; set; }
[XmlReference]
public Player Captain { get; set; }
}
是否像這樣的東西存在嗎?我看了一下XML模式,但似乎沒有提供我需要的東西。
獎金:它會更好,如果我能產生中間的C#代碼,設置適當的屬性,直接從UML - 或與此有關的任何其他建模形式主義。最後,我只希望能夠在高抽象層次上指定關聯的類型,並使XML序列化符合這個標準,同時以最少的努力/空間來排除錯誤。
您可以引入一個隊長級與您的序列化屬性,而不是元素的樓盤(這樣做將需要XmlAttribute屬性) – HimBromBeere
你介意什麼XML實際上樣子? 'DataContractSerializer'提供了'IsReference'屬性(通常具有更好的性能)。 –