La méthode de persistance des objets de données en sérialisant et désérialisant une collection d'entités de données génériques.
Lorsque nous utilisons habituellement la base de données, nous rencontrons souvent un problème, c'est-à-dire que nous ne voulons pas que les objets d'entité de données soient insérés dans la base de données, mais nous. Nous voulons les conserver, nous pouvons alors le sérialiser dans
une chaîne XML et l'enregistrer à d'autres endroits. Puisque la chaîne est générée, elle peut être enregistrée à n'importe quel endroit où nous voulons l'enregistrer. Par exemple, ViewState, cookie, cache d'asp.net, etc.
Tout d’abord, nous définissons une classe d’entités de données.
Entité de classe
{
publicEntity()
{}
identifiant international privé ;
identifiant public int
{
obtenir
{
renvoyer l'identifiant ;
}
ensemble
{
identifiant = valeur ;
}
}
nom de chaîne privée ;
chaîne publique Nom
{
obtenir
{
renvoyer le nom ;
}
ensemble
{
nom = valeur ;
}
}
double prix privé ;
Prix public double
{
obtenir
{
prix de retour ;
}
ensemble
{
prix = valeur ;
}
}
}
Insérez-le donc dans l'objet List<Entity>
List<Entity> list = new List<Entity>();
Entité obj = new Entity();
obj.Id = 1 ;
obj.Name = "test";
obj.Prix = 3,23 ;
list.Add(obj);
De cette façon, un objet List<Entity> est créé avec succès. Sérialisons-le
chaîne statique publique Serialize<BusinessObject>(List<BusinessObject> GenericList)
{
Résultat XmlDocument = new XmlDocument();
result.LoadXml("<Root></Root>");
foreach (Obj BusinessObject dans GenericList)
{
XmlElement Item = result.CreateElement("Item");
PropertyInfo[] propriétés = obj.GetType().GetProperties();
foreach (propriété PropertyInfo dans les propriétés)
{
if (property.GetValue(obj, null) != null)
{
Élément XmlElement = result.CreateElement(property.Name);
element.SetAttribute("Type", property.PropertyType.Name);
element.InnerText = property.GetValue(obj, null).ToString();
Item.AppendChild(élément);
}
}
result.DocumentElement.AppendChild(Item);
}
renvoyer le résultat.InnerXml ;
}
Ensuite, nous appelons cette méthode
string str = Serialize<Entity>(list);
Le fichier XML généré est :
<Root>
<Objet>
<Id Type="Int32">1</Id>
<Name Type="String">test</Name>
<Type de prix="Double">3,23</Prix>
</Article>
</Racine>
Ensuite, nous désérialisons le fichier XML généré ci-dessus et générons l'objet List<Entity> tout à l'heure
public static List<BusinessObject> Deserialize<BusinessObject>(string XmlStr)
{
List<BusinessObject> result = new List<BusinessObject>();
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.LoadXml(XmlStr);
foreach (XmlNode ItemNode dans XmlDoc.GetElementsByTagName("Root").Item(0).ChildNodes)
{
Élément BusinessObject = Activator.CreateInstance<BusinessObject>();
PropertyInfo[] propriétés = typeof(BusinessObject).GetProperties();
foreach (XmlNode propertyNode dans ItemNode.ChildNodes)
{
nom de chaîne = propertyNode.Name ;
type de chaîne = propertyNode.Attributes["Type"].Value ;
valeur de chaîne = propertyNode.InnerXml ;
foreach (propriété PropertyInfo dans les propriétés)
{
if (nom == propriété.Nom)
{
property.SetValue(item,Convert.ChangeType(value,property.PropertyType), null);
}
}
}
result.Add(item);
}
renvoyer le résultat ;
}
Ensuite, nous appelons cette méthode :
List<Entity> list = Deserialize<Entity>(str);
C'est fini.
Cet article vous présente uniquement une méthode simple de sérialisation des objets List<>. Vous devez l'utiliser en fonction de votre propre situation.
http://www.cnblogs.com/kchen/archive/2006/11/04/550382.html