次の過度に単純化されたXMLのチャンクについて考えてみます。
<ElementA>
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#integer">5
</AttributeValue>
</ElementA>
具体的には、DataType属性からAttributeValue要素を見ると、私の値が整数型であることがわかります(ただし、double、string、datetime ... w3標準から確立されたデータ型である可能性があります)。このxmlを強く型付けされた値を持つ.NETクラスに逆シリアル化したいです。私が最初に頭に浮かんだのは、ジェネリックAttributeValueクラスを作成することです。
public class AttributeValue<T>
{
public T Value {get; set;}
}
しかしもちろん、これはいくつかの理由で機能しません-最大の理由は、Tが定義されていないためにコンパイルされない親クラスで型を宣言する必要があることです:
public class ElementA
{
public AttributeValue<T> {get; set; } // Naturally, this will not work because T
} // is not defined.
さらに、カスタムシリアル化を処理するには、クラスにIXmlSerializableを実装する必要があります。
この問題を解決するためのより良い方法はありますか?コードでDataType属性をシリアル化し、値を文字列として格納し、後で変換できることはわかっていますが、後で処理するために、ビジネスオブジェクトに正しい型を実際に含めると便利です。
助けてくれてありがとう!
ジェイソン