私はTHW私はデシリアライズするXMLコードを次ていますデシリアライズXML - 間違った形式にnullを返します
<a>
<b> n/a </b>
</a>
は今、(b)は、通常の整数であるが、時には「N /」利用できないため。上記のXMLを逆シリアル化すると、間違った形式を使用したという例外が発生します...正しいものです。 しかし、私は、null値
public class a
{
Nullable<int> b;
}
私はTHW私はデシリアライズするXMLコードを次ていますデシリアライズXML - 間違った形式にnullを返します
<a>
<b> n/a </b>
</a>
は今、(b)は、通常の整数であるが、時には「N /」利用できないため。上記のXMLを逆シリアル化すると、間違った形式を使用したという例外が発生します...正しいものです。 しかし、私は、null値
public class a
{
Nullable<int> b;
}
あなたがそれを行うことができる唯一の方法は、のようなものを使用することです:
ここで[XmlIgnore]
public int? B {get;set;}
public bool ShouldSerializeBSerialized() {
return B.HasValue;
}
[XmlElement("b")]
public string BSerialized {
get { return B.ToString(); }
set {
int tmp;
if(value != null && int.TryParse(value.Trim(), out tmp))
{
B = tmp;
}
}
}
:
B
はint?
たちはBSerialized
がShouldSerializeBSerialized
は、我々は唯一のNULL可能int型との違いはあります有効なデータするだけでint型を必要とする以下のを見て:
をシリアライズ確実に構文解析などを扱うシムプロパティでデータを保存するために使用しますです非整数の要素を持つ要素。これはここでは機能しません( 'N/A'参照) –
あなたは正しいです:-)。私は唯一の方法は、int –
+1を解析し、このような何かを言った私の答えを削除しようとするいくつかのコードを書くことだと思う;私はコードを気にしませんでした。 –
これは私が最終的にそれを実現した方法です。どうもありがとう – Hint