0

これはおそらく重複しているように感じますが、探している正確な答えが見つかりません。オブジェクトにIXmlSerializableを実装しており、 linq-to-xml の使用が許容されるかどうかを知りたいです。

これを交換して...

public void WriteXml(XmlWriter writer)
{
    writer.WriteElementString("Name", _name);
    writer.WriteElementString("X", _x.ToString());
    writer.WriteElementString("Y", _y.ToString());
}

これとともに...

public void WriteXml(XmlWriter writer)
{
    XElement element =
        new XElement("MyObj",
            new XElement("Name", _name),
            new Xelement("X", _x),
            new Xelement("Y", _y)
        );

    element.WriteTo(writer);
}

私の実際の実装は明らかに複雑で、linq-to-xml構造の方が単純で読みやすいと感じています。上記は許容されますか?

4

1 に答える 1

2

最初の実装は、2 番目の実装と同じ xml を生成しません。最初の実装によって生成された xml と一致するように、次のように 2 番目の実装を記述する必要があります。

public void WriteXml(XmlWriter writer)
{
    new XElement("Name", _name).WriteTo(writer);
    new XElement("X", _x).WriteTo(writer);
    new XElement("Y", _y).WriteTo(writer);
}

また、お電話の際は

writer.WriteElementString("X", _x.ToString());

_x の型 (_x の型が DateTime の場合など) によっては、結果が XML に準拠せず、不適切な解析に対して脆弱になる可能性があるため、少なくともこの点では、2 番目の実装の方が優れています。

一言で言えば、C#5からこの情報の一部を取得しました。

于 2014-01-13T01:56:53.693 に答える