質問

いの実現に向けての一助となる以下の

この図は、自動車ユーザーの追加エンジンや色

私はXMLでは以下のようなものです:

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

何をしたいと思っているラップ車内部'の車両'ます。e

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

い、最適な方法が分からないことにある。たいモデルについexplorerや、生成されたXMLに包まれに車両がすべてのその他の意図や目的にユーザーは、車のみ

情報:Visual Studio2010、C#、DSLするために使用されています2010

役に立ちましたか?

解決 2

私は以下のことで、これを修正しました。私は二重のCarクラスを派生していますし、車のシリアライザに私はこれをやってます:

余分な要素を書きます

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

...

他のヒント

いう二つの異なるアプローチ:


1: オーバーライドDSLパッケージのクラスDocData にDocData.csファイルオーバーライド方法

protected override void OnDocumentSaved(System.EventArgs e)

た後のラッパー

その後、私のオーバーライドでDocData.cs

protected override void OnDocumentLoading(System.EventArgs e)

との呼び出しの前に、前年同月比を加重平均して算 base.OnDocumentLoading(e); 私から削除するファイルです。


2: 下DSL Explorerに行くXMLを直列化挙動および設定車のドメインクラス"は、カスタム=trueになります。

このソリューションではないでもないし複雑化しているようでした。きを定義する必要の一方法が各カスタム法話ができるDSL発生するという手法"DefaulMethod"のデフォルトのDSL双活動しています。


私は現在使用VS2005年、一部のものが変化してい...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top