classをSerizlize(XMLフォーマット)して、DBやファイルに書き込むことで、柔軟性の高いデータ形式で保存できる。
例) DBの可変長列にSerializeしたクラスオブジェクトを書き込み、そのオブジェクトをDBを介して再現するような場合。あるいは、設定値などを保存しておく、などに使える。
Sample : refSbXmlに、typeとobjで渡したクラスの情報を、Serializeした結果をセットして戻す。
//■Serializeするメソッド例
public void Serialize( ref StringBuilder refSbXml, Type type, object obj)
{
System.Xml.XmlWriter xml_writer = System.Xml.XmlWriter.Create( refSbXml );
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer( type );
serializer.Serialize( xml_writer, obj );
// clean
xml_writer = null;
serializer = null;
}
-----------------
//■呼び出し側
StringBuilder sb_xml = new StringBuilder();
OpLogDataKey_PAT_OPEN data_key = new OpLogDataKey_PAT_OPEN();
data_key.PAT_ID = id;
oplog_dataman.Serialize( ref sb_xml, typeof( OpLogDataKey_PAT_OPEN ), data_key);
:
//■SerializeするClass
public class OpLogDataKey_PAT_OPEN
{
public string PAT_ID;
}
-------------------
sb_xml.ToString()は、以下の文字列が得られる。
<?xml version="1.0" encoding="utf-16"?><OpLogDataKey_PAT_OPEN xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><PAT_ID>36102152</PAT_ID></OpLogDataKey_PAT_OPEN>
-------------------
Deserializeは、XmlSerializerクラスのDeserializeメソッドを使う。
public object Deserialize( string xmlData, Type type)
{
System.Xml.XmlReader xml_reader = System.Xml.XmlReader.Create( new System.IO.StringReader( xmlData));
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer( type );
return serializer.Deserialize( xml_reader);
}
0 件のコメント:
コメントを投稿