我已经通过以下解决了这个。我双推导汽车类,并在车载串行我这样做:
编写额外的元素:
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