我寻求帮助,以实现以下

的图解表示了一辆车,用户可以添加发动机和颜色

当我认为它看起来像这样的XML:

<Car>
  <Engine>BigEngine</Engine>
  <Colour>Pink</Colour>
</Car>

我想要做的是包装车内“车辆”,即

<Vehicle>
  <Car>
    <Engine>BigEngine</Engine>
    <Colour>Pink</Colour>
  </Car>
</Vehicle>

我不知道的实现这一目标的最佳途径。我想模型资源管理和将所生成的XML被包裹在“车辆”,但是对于所有其它的意图和目的用户正与一个轿厢只

的信息:Visual Studio 2010中,C#和2010 DSL SDK

有帮助吗?

解决方案 2

我具有由下固定这一点。我双推导汽车类,并在车载串行我这样做:

编写额外的元素:

  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();
    }
}

要能看懂这回我是覆盖在SerializationHelper的汽车LoadModel方法以及在哪里得到我读的元素,直到我去租车读者。

...

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)
{

...

其他提示

我想尝试两种不同的方法:


<强>第一替换DSL Package类DocData  在DocData.cs文件和覆盖方法

protected override void OnDocumentSaved(System.EventArgs e)

和然后我会创建包装

然后我覆盖DocData.cs

protected override void OnDocumentLoading(System.EventArgs e)

和调用基方法base.OnDocumentLoading(e);我会从文件中删除之前。


2日:在DSL资源管理器去XML序列化行为,并设置汽车领域一流 “是自定义=真正的”

此解决方案并不简单,但因为它似乎在第一位置它不那么复杂。你将必须定义每一个方法,但对于每一个自定义的方法,你可以调用名为“DefaulMethod”一个DSL生成的方法,该方法具有默认的DSL串行行为。


我目前使用VS 2005,所以有些事情可能会改变...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top