XML Deserialization - تحويل قيمة السمة إلى فئة تلقائيًا (.NET)

StackOverflow https://stackoverflow.com/questions/421660

  •  05-07-2019
  •  | 
  •  

سؤال

(vb.net/c#/etc)

أواجه صعوبة في معرفة كيفية القيام ببعض السحر. حاليًا تعمل إزالة الجفررة القياسية بشكل جيد ، بما في ذلك التعداد ، ولكن حاليا أريد تحويل سمة إلى فصل. أوه! ماذا كنت التفكير!

يبدو XML الخاص بي مثل هذا:

....
<review user="..." version="2.2">...</review>

وهذا لممتلكاتي/صفي:

[XmlAttribute("version")]
public MyVersion Version { get; set; }

class MyVersion  {
    // equality overloaded
    // can ctype() from string to MyVersion
    // constructor that takes a single string, etc
}

كيف يمكنني مساعدة المسلسل على طول ، بحيث يمكن تلقائيًا إلغاء تلقائي خاصية السلسلة في هذه الفئة؟ هل أحتاج إلى تعديل فئة myversion بطريقة ما ، أو تغيير تعريف الخاصية؟

  • أفعل ليس تريد أن تضطر إلى تجاوز أي طرق مثل ondeserialized ، وما إلى ذلك. لا يستحق ذلك لهذا المشروع.

إذا كان لا يمكن القيام بذلك باستخدام Deserializer الافتراضي XML ، فسيكون ذلك جيدًا بما يكفي لمعرفة. هناك الكثير من الأشياء ليست جيدة لها ، لذلك لن أتفاجأ.

شكرًا!

هل كانت مفيدة؟

المحلول

هذا غير مدعوم بطريقة إعلانية. سيتعين عليك تنفيذ ixmlserializable على الفصل الأصل (الذي يتم تسلسله في عنصر) وإجراء التحويل بين السلسلة ونوع myValue يدويًا.

نصائح أخرى

يمكنك القيام بذلك بسهولة تامة - ليس فقط كعمل هجر.

استخدم XSD لإنشاء فصولك للتخلص. الآن هذه كلها فئات جزئية حتى تتمكن من كتابة جزء جديد من فئة المراجعة (التي تحتوي على السمة "الإصدار") وإضافة طريقة تحصل على/تعيين الإصدار.

في طريقة GET Simple ، قم بإنشاء مثيل جديد لتلك الفئة وفي طريقة SET Simple تحديث الإصدار الحالي من فئة الإصدار المتوفرة Ther.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top