XmlSerializer
は、属性のためにこれをそのまま受け入れません。 XMLの構造を制御している場合は、XMLの目的を文字列で区切った属性文字列を使用することから、子要素の使用を検討してください。
計算されたプロパティを使用することもできます。しかし、このプロパティにアクセスするたびにカンマで区切られた文字列を解析するため、これは遅くなることに注意してください。
[XmlAttribute(AttributeName = "Pages")]
public string PagesString { get; set; }
public IList<int> Pages {
get {
return PagesString.Split(',').Select(x => Convert.ToInt32(x.Trim())).ToList();
}
set {
PagesString = String.Join(",", value);
}
}
また、この愚かな実装では、文字列に間違った入力がある可能性があることを考慮していません。あなたもそれを守るべきです。
ページプロパティにアクセスするたびに、新しいコレクションが返されることに注意してください。戻り値にAdd()
を呼び出すと、この変更はXMLに反映されません。
スペース区切り文字を使用して逆シリアル化できる方法は、コンマ区切りリストも使用して逆シリアル化できるはずです。あなたはその問題に直面していますか? –
値の区切りを変更する方法は見ていません。以下の答えは私が考えている可能性のある解決法と似ています。 – Histerical