我已經通過以下解決了這個。我雙推導汽車類,並在車載串行我這樣做:
編寫額外的元素:
public partial class CarSerializer : CarSerializerBase
{
public override void Write(SerializationContext serializationContext, ModelElement element, XmlWriter writer, RootElementSettings rootElementSettings)
{
// Adds the Model and LobSystem root elements to match that required by the SharePoint BCS
writer.WriteStartElement("Garage");
writer.WriteStartElement("Cars");
base.Write(serializationContext, element, writer, rootElementSettings);
writer.WriteEndElement();
writer.WriteEndElement();
}
}
爲了能夠閱讀這回我是覆蓋在該汽車LoadModel方法SerializationHelper以及讀者在哪裏閱讀元素,直到我到達Car。
....
XmlReader reader = XmlReader.Create(fileStream, settings);
reader.MoveToContent();
while (!reader.EOF && !reader.Name.Equals("Car"))
{
reader.Read();
}
reader = reader.ReadSubtree();
// using (global::System.Xml.XmlReader reader = global::System.Xml.XmlReader.Create(fileStream, settings))
using (reader)
{
....
你能說你爲什麼要這麼做?它將不再與您的域模型相匹配。也許改變,讓圖表代表車輛? – 2009-08-13 10:25:58
這是一款我們正在創造的產品 - 與Cars無關,但我認爲這有助於更好地展示。 (第三方)域模型規定車輛可以有多個Cars,並且在他們的工具導入生成的XML時需要這個。 然而,在DSL中,我們創建的是我們所說的車輛將只有1輛車,因此我們將車輛圖設置爲汽車級,並且僅在序列化時或更好的地方添加Vechicle元素纔有意義。這有意義嗎? – 2009-08-13 10:50:46