汎用データ エンティティのコレクションをシリアル化および逆シリアル化することによってデータ オブジェクトを永続化する方法。
通常、データベースを使用するときに、データ エンティティ オブジェクトをデータベースに挿入したくないという問題に遭遇することがよくあります。それらを永続化したい場合は、それを
XML 文字列にシリアル化し、それを他の場所に保存できます。文字列は、保存したい場所に保存できます。たとえば、asp.net の ViewState、Cookie、キャッシュなどです。
まず、データ エンティティ クラスを定義します。
クラスエンティティ
{
publicEntity()
{}
プライベート int ID;
パブリック整数ID
{
得る
{
ID を返します。
}
セット
{
ID = 値;
}
}
プライベート文字列名。
パブリック文字列名
{
得る
{
名前を返します。
}
セット
{
名前 = 値;
}
価格
;
パブリックダブルプライス
{
得る
{
返品価格。
}
セット
{
価格 = 価値;
}
}
}
したがって、これを List
List
エンティティ obj = 新しい Entity();
obj.Id = 1;
obj.Name = "テスト";
obj.Price = 3.23;
list.Add(obj);
このようにして、List
public static string Serialize
{
XmlDocument 結果 = 新しい XmlDocument();
result.LoadXml("<ルート></ルート>");
foreach (GenericList 内の BusinessObject obj)
{
XmlElement 項目 = result.CreateElement("項目");
PropertyInfo[] プロパティ = obj.GetType().GetProperties();
foreach (プロパティ内の PropertyInfo プロパティ)
{
if (property.GetValue(obj, null) != null)
{
XmlElement 要素 = result.CreateElement(property.Name);
element.SetAttribute("タイプ", property.PropertyType.Name);
element.InnerText = property.GetValue(obj, null).ToString();
item.AppendChild(要素);
}
}
result.DocumentElement.AppendChild(Item);
}
結果を返します。InnerXml;
}
次に、このメソッドを
string str = Serialize
生成された XML ファイルは次のとおりです:
<ルート
>
<アイテム>
アイテム>
ルート>
次に、上記で生成された XML ファイルを逆シリアル化し、List
public static List
{
List
XmlDocument XmlDoc = 新しい XmlDocument();
XmlDoc.LoadXml(XmlStr);
foreach (XmlDoc.GetElementsByTagName("Root").Item(0).ChildNodes の XmlNode ItemNode)
{
BusinessObject item = Activator.CreateInstance
PropertyInfo[] プロパティ = typeof(BusinessObject).GetProperties();
foreach (ItemNode.ChildNodes の XmlNode propertyNode)
{
文字列名 = propertyNode.Name;
文字列型 = propertyNode.Attributes["Type"].Value;
文字列値 = propertyNode.InnerXml;
foreach (プロパティ内の PropertyInfo プロパティ)
{
if (名前 == プロパティ.名前)
{
property.SetValue(item,Convert.ChangeType(value,property.PropertyType), null);
}
}
}
result.Add(項目);
}
結果を返します。
}
次に、このメソッドを呼び出します。
List
終わりました。
この記事では、List<> オブジェクトをシリアル化する簡単な方法のみを紹介します。独自の状況に応じて使用してください。
http://www.cnblogs.com/kchen/archive/2006/11/04/550382.html