0

基本的な SVG 要素のいくつかの非常に大まかな実装を構築しています。オブジェクトを使用可能な XML ストリームにシリアライズしたいと考えています。詳細の多くは問題ありませんが、何らかの理由で、同じタイプのオブジェクトを 1 つ以上含むことができるオブジェクトのタイプ ("g) の基本に行き詰まっています。

以下は、簡略化された例です。

<svg>
  <g display="inline">
    <g display="inline">
        <circle id="myCircle1"/>
        <rectangle id="myRectangle1"/>
    </g>
    <circle id="myCircle2"/>
    <rectangle id="myRectangle2"/>
  </g>
</svg>

最初の 'g' 要素には、他の g 要素が含まれています。そのオブジェクトを設計する最良の方法は何ですか?

[XMLTypeOf("svg")]
public class SVG
{
    public GraphicGroup g {set; get;}
}

public GraphicGroup
{
   public GraphicGroup g {set; get;}
   public Circle circle { set; get;}
   public Rectangle rectangle { set; get;}
}

public Circle...
public Rectangle...

これは完全に正しいとは言えません。何か案は?

4

3 に答える 3

2

申し訳ありませんが、C# を介した XML への結合についてはわかりませんXMLTypeOf(どこから来たのか? は MSDN 検索には表示されません)。 ..不足している宣言を追加します。

public class SVGElement
{
  public String id {set; get;}
  public String style {set; get;}
}

[XMLTypeOf("svg")]
public class SVG : public SVGElement
{
    public GraphicGroup g {set; get;}
}

[XMLTypeOf("g")]
public class GraphicGroup : public SVGElement
{
   public GraphicGroup g {set; get;}
   public Circle circle { set; get;}
   public Rectangle rectangle { set; get;}
}

[XMLTypeOf("circle")]
public class Circle : public SVGElement { ... }

[XMLTypeOf("rectangle")]
public class Rectangle : public SVGElement { ... }
于 2012-06-05T06:26:40.350 に答える
1

ポリモーフィズムを使用する:

public interface IGraphic
{
    void Draw();
}

public class SVG
{
    public GraphicGroup GraphicGroup { get; set; }
}

public class GraphicGroup : IGraphic
{
    public GraphicGroup(Collection<IGraphic> graphics)
    {
        this.Graphics = graphics;
    }

    public Collection<IGraphic> Graphics { get; private set; }

    public void Draw()
    {
        Console.WriteLine("Drawing Graphic Group");
        foreach (IGraphic graphic in this.Graphics)
        {
            graphic.Draw();
        }
    }
}

public class Circle : IGraphic
{
    public void Draw()
    {
        Console.WriteLine("Drawing Circle");
    }
}
于 2012-06-05T07:24:48.190 に答える
0

xsd と xsd を使用してジェネレーターをコード化する

于 2012-06-05T03:04:03.620 に答える