2011-02-04 13 views
17

मैं एक अमूर्त संपत्ति के साथ एक आधार वर्ग की है। इसलिए, यह है:.net XmlSerializer

[XmlElement("something")] 
public override int ID { 
get { //... } 
set { //... } 
} 

मैं baseclass को XmlElement विशेषता स्थानांतरित नहीं कर सकते, के बाद से हर उपवर्ग एक अलग एक्सएमएल elementname होगा।

अब, जब मैं इस वर्ग मैं निम्नलिखित त्रुटि मिलती है deserialize:

Member 'Subclass.ID' hides inherited member 'BaseClass.ID', but has different custom attributes.

मैं क्या कर सकता है?

// Base class 
protected int InternalID {get; set;} 

// Derived class 
[XmlElement] 
public int SomethingID 
{ 
    get {return InternalID;} 
    set {InternalID = value;} 
} 
+0

संपत्ति घोषणा में 'नया' कीवर्ड का उपयोग करने पर विचार करें, जो आपकी समस्या का समाधान कर सकता है। –

उत्तर

29

क्रमबद्धता और व्युत्पन्न प्रकार के अक्रमांकन काम करता है जब अधिरोहित:

0

आधार वर्ग संपत्ति की रक्षा की और गैर सार, तो प्रत्येक व्युत्पन्न वर्ग एक उचित नाम आधार वर्ग संपत्ति के मामले में लागू संपत्ति देते हैं [XmlIgnore] विशेषता जोड़कर गुणों में [XmlElement] और [XmlAttribute] विशेषताएँ हैं।

बेस क्लास को सार बनाया जा सकता है ताकि इसे कभी भी तत्काल नहीं किया जा सके और इसलिए धारावाहिक या deserialized।

[Serializable] 
public abstract class Base 
{ 
    [XmlIgnore] 
    public abstract Int32 ID { get; set; } 
} 
+0

लेकिन बेस क्लास को एक इंटरफ़ेस को कार्यान्वित करने की आवश्यकता है ... यही कारण है कि इसकी आईडी संपत्ति क्यों है। – TDaver