طريقة استمرار كائنات البيانات عن طريق إجراء تسلسل وإلغاء تسلسل مجموعة من كيانات البيانات العامة
عندما نستخدم قاعدة البيانات عادةً، غالبًا ما نواجه مشكلة، أي أننا لا نريد إدراج كائنات كيان البيانات في قاعدة البيانات، لكننا نريد استمرارها، فيمكننا إجراء تسلسل لها في
سلسلة XML وحفظها في أماكن أخرى، نظرًا لإنشاء السلسلة، يمكن حفظها في أي مكان نريد حفظها. على سبيل المثال، حالة العرض وملفات تعريف الارتباط وذاكرة التخزين المؤقت الخاصة بـ asp.net وما إلى ذلك.
أولاً، نحدد فئة كيان البيانات.
كيان الطبقة
{
الكيان العام ()
{}
معرف int الخاص؛
معرف كثافة العمليات العامة
{
يحصل
{
معرف العودة؛
}
تعيين
{
المعرف = القيمة؛
}
}
اسم السلسلة الخاصة؛
اسم السلسلة العامة
{
يحصل
{
اسم الإرجاع؛
}
تعيين
{
الاسم = القيمة؛
}
}
سعر مزدوج خاص؛
السعر المزدوج العام
{
يحصل
{
سعر العودة
}
تعيين
{
السعر = القيمة؛
}
}
}
لذا أدخله في كائن القائمة <Entity>
List<Entity> list = new List<Entity>();
Entity obj = new Entity();
obj.Id = 1;
obj.Name = "اختبار";
obj.Price = 3.23;
list.Add(obj);
بهذه الطريقة، تم إنشاء كائن List<Entity> بنجاح، فلنقم بإجراء تسلسل له باستخدام
سلسلة ثابتة عامة Serialize<BusinessObject>(List<BusinessObject> GenericList).
{
نتيجة XmlDocument = new XmlDocument();
result.LoadXml("<Root></Root>");
foreach (BusinessObject obj في GenericList)
{
XmlElement Item = result.CreateElement("Item");
PropertyInfo[] property = obj.GetType().GetProperties();
foreach (خاصية PropertyInfo في الخصائص)
{
إذا (property.GetValue(obj, null) != null)
{
XmlElement element = result.CreateElement(property.Name);
element.SetAttribute("Type", property.PropertyType.Name);
element.InnerText = property.GetValue(obj, null).ToString();
Item.AppendChild(element);
}
}
result.DocumentElement.AppendChild(Item);
}
إرجاع النتيجة.InnerXml;
}
ثم نسمي هذه الطريقة
string str = Serialize<Entity>(list);
ملف XML الذي تم إنشاؤه هو:
<Root>
<العنصر>
<Id Type="Int32">1</Id>
<Name Type="String">اختبار</Name>
<نوع السعر = "مزدوج">3.23</السعر>
</العنصر>
</الجذر>
بعد ذلك، نقوم بإلغاء تسلسل ملف xml الذي تم إنشاؤه أعلاه وإنشاء كائن List<Entity> الآن فقط
List<BusinessObject> العام الثابت Deserialize<BusinessObject>(string XmlStr)
{
List<BusinessObject> result = new List<BusinessObject>();
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.LoadXml(XmlStr);
foreach (XmlNode ItemNode في XmlDoc.GetElementsByTagName("Root").Item(0).ChildNodes)
{
BusinessObject item = Activator.CreateInstance<BusinessObject>();
PropertyInfo[] property = typeof(BusinessObject).GetProperties();
foreach (خاصية XmlNode في ItemNode.ChildNodes)
{
اسم السلسلة = propertyNode.Name؛
نوع السلسلة = propertyNode.Attributes["Type"].Value;
قيمة السلسلة = propertyNode.InnerXml؛
foreach (خاصية PropertyInfo في الخصائص)
{
إذا (الاسم == اسم العقار)
{
property.SetValue(item,Convert.ChangeType(value,property.PropertyType), null);
}
}
}
result.Add(item);
}
نتيجة الإرجاع؛
}
ثم نسمي هذه الطريقة:
List<Entity> list = Deserialize<Entity>(str);
انتهى.
تقدم لك هذه المقالة فقط طريقة بسيطة لإجراء تسلسل لكائنات القائمة<>، ويجب عليك استخدامها وفقًا لحالتك الخاصة.
http://www.cnblogs.com/kchen/archive/2006/11/04/550382.html