सादगी के उद्देश्यों के लिए, मैं फल का उपयोग करके अपना नमूना कोड दिखाऊंगा। वास्तविकता में मैं कुछ और सार्थक कर रहा हूं (हमें उम्मीद है)।अमान्य enum आइटम deserializing अपवाद से कैसे बचें?
public enum FruitType
{
Apple,
Orange,
Banana
}
और एक वर्ग:
[Serializable]
public class Fruit
{
public FruitType FruitType { get; set; }
public Fruit(FruitType type)
{
this.FruitType = type;
}
}
हम क्रमानुसार सकता है और यह डी-क्रमानुसार कहते हैं कि हम एक enum करते हैं। अब, की सुविधा देता है enum संशोधित करते हैं, इतना है कि यह अब है:
public enum FruitType
{
GreenApple,
RedApple,
Orange,
Banana
}
जब डी-serializing पहले धारावाहिक वस्तुओं, आप Apple
(मूल enum आइटम) के रूप में एक System.InvalidOperation
अपवाद मान्य नहीं है। वस्तु को डी-धारावाहिक नहीं मिलता है।
[XmlElement(ElementName = "Mode")]
public FruitType FruitType { get; set; }
अब, de-क्रमबद्धता के दौरान वर्ष संपत्ति नजरअंदाज कर दिया जाता:
एक तरह से मैं इस को हल करने में सक्षम था जब यह धारावाहिक हो जाता है एक अलग नाम Fruit
कक्षा में FruitType
संपत्ति देने के लिए इस प्रकार था जैसा कि यह नहीं मिला है। मैं जानना चाहता हूं कि डी-सीरियलाइजेशन के दौरान अमान्य एनम आइटम को अनदेखा/छोड़ने का कोई तरीका है, ताकि कोई अपवाद फेंक दिया न जाए और ऑब्जेक्ट को अभी भी डी-सीरियलाइज किया जा सके।
जुड़ा हुआ सवाल जहां मैं एक काम कर नमूना परियोजना शामिल करने के लिए मेरा उत्तर देखें चाहते हैं कि मिलना चाहिए: http://stackoverflow.com/a/10709040 – user423430