题
我寻求帮助,以实现以下
的图解表示了一辆车,用户可以添加发动机和颜色
当我认为它看起来像这样的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,所以有些事情可能会改变...
不隶属于 StackOverflow