私は、このようにC#のXML(デ)シリアル化メカニズムをカスタマイズする方法を必要とする:IXmlSerializableインターフェースメソッドの条件付き使用
[Serializable]
public class MyElement : IXmlSerializable
{
[XmlAttribute]
public string PropertyX { get; set; }
[XmlElement]
public MySubElement SubElement { get; set; }
// .... other properties and elements...
[XmlIgnore]
public string ElementXml { get;set; }
public XmlSchema GetSchema() { return null; }
public void ReadXml(XmlReader reader)
{
// use default deserialization mechanism, like IXmlSerializable isn't implemented
}
public void WriteXml(XmlWriter writer)
{
if (!string.IsNullOrEmpty(ElementXml)) {
// serialize as ElementXml value
}
else
{
// serialize using default serialization mechanism, like IXmlSerializable isn't implemented
}
}
}
インスタンスMySubElementものように振る舞うべきであるため、私は、複数の要素にこのパラダイムを使用する必要がこの。オブジェクトモデルは複雑なので、属性または要素ごとにこの属性を実装することは私の選択肢ではありません。 これはできますか?
何らかの点でこれを何とかしなければならない、これも参照してくださいhttps://stackoverflow.com/questions/1495716/net-xmlignore-by-default – Aybe
「ElementXml」が設定されている場合、他のメンバー'PropertyX'はデフォルト(ヌル)値を持っていますか? – dbc
@dbcもし問題が解決するなら、それらにデフォルト値を持たせることができます。 – Filip