自作コレクションの入っているArrayListのシリアル化
- 題名: 自作コレクションの入っているArrayListのシリアル化
- 著者: たぐっさん
- 日時: 2010/08/22 21:21:09
- ID: 27203
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: 自作コレクションの入っているArrayListのシリアル化
- 著者: Hongliang
- 日時: 2010/08/22 22:37:30
- ID: 27204
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: 自作コレクションの入っているArrayListのシリアル化
- 著者: たぐっさん
- 日時: 2010/08/23 20:01:00
- ID: 27207
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
こんにちは。
ほとんど初心者で恐縮ですが、よろしくおねがいします。
私は、ある設定をユーザーごとに管理使用と思っていて、次のようなクラスを作りました。
public class an_set
{
public string _CtrName;
public object _Property;
public Type _CtrType;
public string CtrName
{
get { return _CtrName; }
set { _CtrName = value; }
}
public object Property
{
get { return _Property; }
set { _Property = value; }
}
public Type CtrType
{
get { return _CtrType; }
set { _CtrType = value; }
}
}
public class NArray : ArrayList
{
public string _TaskName;
public string TaskName
{
get { return _TaskName; }
set { _TaskName = value; }
}
}
NArrayにはan_setがたくさん収納されており、別のArrayListにそのようなNArrayをたくさん収納されています。
これを、
//XmlSerializerオブジェクトを作成
//書き込むオブジェクトの型を指定する
System.Xml.Serialization.XmlSerializer serializer1 = new System.Xml.Serialization.XmlSerializer(typeof(ArrayList), new Type[] { typeof(an_set), typeof(NArray), typeof(string) });
//ファイルを開く
System.IO.FileStream fs1 = new System.IO.FileStream(fileName, System.IO.FileMode.Create);
//シリアル化し、XMLファイルに保存する
serializer1.Serialize(fs1, SetCol);
//閉じる
fs1.Close();
でシリアル化し、
//XmlSerializerオブジェクトの作成NArray settings = Search_Settings(SetCol, (string)listBox1.SelectedItem);
System.Xml.Serialization.XmlSerializer serializer2 = new System.Xml.Serialization.XmlSerializer(typeof(ArrayList), new Type[] { typeof(an_set), typeof(NArray),typeof(string) });
//ファイルを開く
System.IO.FileStream fs2 = new System.IO.FileStream(fileName, System.IO.FileMode.Open);
//XMLファイルから読み込み、逆シリアル化する
SetCol = (ArrayList)serializer2.Deserialize(fs2);
//閉じる
fs2.Close();
で逆シリアル化して元のArrayListを取り出そうと思っているのですが、
いざ取り出してみるとNArrayのTaskNameプロパティが全てNullになってしまいます。
なんでだろうと思って、シリアル化した後のXMLファイルを見てみると、NArrayのTaskNameプロパティにあたる部分が全く見あたりませんでした。
どうしてこのようになってしまうのでしょうか?
また、解決策はあるでしょうか?
どうか、ご教授よろしくお願い致します。