Метод сохранения объектов данных путем сериализации и десериализации набора общих объектов данных.
Когда мы обычно используем базу данных, мы часто сталкиваемся с проблемой, то есть мы не хотим, чтобы объекты объектов данных были вставлены в базу данных, но мы хотим сохранить их, то мы можем сериализовать их в
строку XML и сохранить в других местах. Поскольку строка генерируется, ее можно сохранить в любом месте, где мы хотим ее сохранить. Например, ViewState, cookie, кеш и т. д. asp.net.
Сначала мы определяем класс объекта данных.
класс Сущность
{
publicEntity()
{}
частный внутренний идентификатор;
общедоступный внутренний идентификатор
{
получать
{
вернуть идентификатор;
}
набор
{
идентификатор = значение;
}
}
имя частной строки;
общедоступная строка Имя
{
получать
{
вернуть имя;
}
набор
{
имя = значение;
}
}
частная двойная цена;
общественная двойная цена
{
получать
{
цена возврата;
}
набор
{
цена = стоимость;
}
}
}
Поэтому вставьте его в объект List<Entity>
List<Entity> list = new List<Entity>();
Объект объекта = новый объект();
объект.Ид = 1;
obj.Name = "тест";
объект.Цена = 3,23;
список.Добавить(объект);
Таким образом, объект List<Entity> создается успешно. Давайте сериализуем его как
общедоступную статическую строку Serialize<BusinessObject>(List<BusinessObject> GenericList).
{
Результат XmlDocument = новый XmlDocument();
result.LoadXml("<Root></Root>");
foreach (объект BusinessObject в GenericList)
{
XmlElement Item = result.CreateElement("Элемент");
PropertyInfo[] свойства = obj.GetType().GetProperties();
foreach (свойство PropertyInfo в свойствах)
{
если (property.GetValue(obj, null)!= null)
{
Элемент XmlElement = result.CreateElement(property.Name);
element.SetAttribute("Тип", свойство.ТипСвойства.Имя);
element.InnerText = property.GetValue(obj, null).ToString();
Item.AppendChild(элемент);
}
}
результат.DocumentElement.AppendChild(Элемент);
}
вернуть результат.InnerXml;
}
Затем мы вызываем этот метод
string str = Serialize<Entity>(list);
Сгенерированный XML-файл:
<Root>
<Предмет>
<Id Type="Int32">1</Id>
<Name Type="String">тест</Name>
<Price Type="Double">3,23</Price>
</Элемент>
</Корень>
Затем мы десериализуем XML-файл, созданный выше, и только что создаем объект List<Entity>
public static List<BusinessObject> Deserialize<BusinessObject>(string XmlStr)
{
Результат List<BusinessObject> = новый List<BusinessObject>();
XmlDocument XmlDoc = новый XmlDocument();
XmlDoc.LoadXml(XmlStr);
foreach (XmlNode ItemNode в XmlDoc.GetElementsByTagName("Root").Item(0).ChildNodes)
{
Элемент BusinessObject = Activator.CreateInstance<BusinessObject>();
PropertyInfo[] свойства = typeof(BusinessObject).GetProperties();
foreach (XmlNode propertyNode в ItemNode.ChildNodes)
{
имя строки = PropertyNode.Name;
тип строки = propertyNode.Attributes["Тип"].Value;
строковое значение = propertyNode.InnerXml;
foreach (свойство PropertyInfo в свойствах)
{
если (имя == свойство.Имя)
{
property.SetValue(item,Convert.ChangeType(value,property.PropertyType), null);
}
}
}
результат.Добавить(элемент);
}
вернуть результат;
}
Затем мы вызываем этот метод:
List<Entity> list = Deserialize<Entity>(str);
Все кончено.
Эта статья знакомит вас только с простым методом сериализации объектов List<>. Его следует использовать в зависимости от вашей ситуации.
http://www.cnblogs.com/kchen/archive/2006/11/04/550382.html