O método de persistência de objetos de dados serializando e desserializando uma coleção de entidades de dados genéricas.
Quando normalmente usamos o banco de dados, muitas vezes encontramos um problema, ou seja, não queremos que os objetos da entidade de dados sejam inseridos no banco de dados, mas queremos. quiser persisti-los, então podemos serializá-lo em
uma string XML e salvá-lo em outros locais. Como a string é gerada, ela pode ser salva em qualquer lugar onde quisermos. Por exemplo, ViewState, cookie, cache do asp.net, etc.
Primeiro, definimos uma classe de entidade de dados.
entidade de classe
{
entidade pública()
{}
id interno privado;
ID interno público
{
pegar
{
identificação de retorno;
}
definir
{
id = valor;
}
}
nome da string privada;
nome da string pública
{
pegar
{
nome de retorno;
}
definir
{
nome = valor;
}
}
preço duplo privado;
preço duplo público
{
pegar
{
preço de retorno;
}
definir
{
preço = valor;
}
}
}
Portanto, insira-o no objeto List<Entity>
List<Entity> list = new List<Entity>();
Entidade obj = new Entidade();
obj.Id = 1;
obj.Nome = "teste";
obj.Preço = 3,23;
lista.Adicionar(obj);
Desta forma, um objeto List<Entity> é criado com sucesso. Vamos serializá-lo
public static string Serialize<BusinessObject>(List<BusinessObject> GenericList)
{
Resultado XmlDocument = new XmlDocument();
result.LoadXml("<Root></Root>");
foreach (obj BusinessObject em GenericList)
{
XmlElement Item = result.CreateElement("Item");
PropriedadeInfo[] propriedades = obj.GetType().GetProperties();
foreach (propriedade PropertyInfo em propriedades)
{
if (property.GetValue(obj, null) != null)
{
Elemento XmlElement = resultado.CreateElement(property.Name);
element.SetAttribute("Tipo", propriedade.PropertyType.Name);
elemento.InnerText = propriedade.GetValue(obj, null).ToString();
Item.AppendChild(elemento);
}
}
resultado.DocumentElement.AppendChild(Item);
}
retornar resultado.InnerXml;
}
Então chamamos esse método
de string str = Serialize<Entity>(list);
O arquivo XML gerado é:
<Root>
<Item>
<Id Type="Int32">1</Id>
<Name Type="String">teste</Name>
<Price Type="Double">3,23</Price>
</Item>
</Raiz>
A seguir, desserializamos o arquivo xml gerado acima e geramos o objeto List<Entity> agora mesmo
public static List<BusinessObject> Deserialize<BusinessObject>(string XmlStr)
{
List<BusinessObject> resultado = new List<BusinessObject>();
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.LoadXml(XmlStr);
foreach (XmlNode ItemNode em XmlDoc.GetElementsByTagName("Root").Item(0).ChildNodes)
{
Item BusinessObject = Activator.CreateInstance<BusinessObject>();
PropertyInfo[] propriedades = typeof(BusinessObject).GetProperties();
foreach (XmlNode propertyNode em ItemNode.ChildNodes)
{
string nome = propertyNode.Name;
string tipo = propertyNode.Attributes["Tipo"].Valor;
valor da string = propertyNode.InnerXml;
foreach (propriedade PropertyInfo em propriedades)
{
if (nome == propriedade.Nome)
{
propriedade.SetValue(item,Convert.ChangeType(valor,propriedade.PropertyType), null);
}
}
}
resultado.Adicionar(item);
}
resultado de retorno;
}
Então chamamos este método:
List<Entity> list = Deserialize<Entity>(str);
Acabou.
Este artigo apresenta apenas um método simples de serialização de objetos List<>. Você deve usá-lo de acordo com sua situação.
http://www.cnblogs.com/kchen/archive/2006/11/04/550382.html