wcf - DataContract Serialization - Base class property names not working -
मेरे पास निम्न की तरह एक बेस क्लास है:
[serializable] सार्वजनिक वर्ग SerializableDomainObject & lt; टी & gt; {सार्वजनिक सिरिअलाइज़ेबलडोमेन ऑब्जेक्ट () {ID = Guid.NewGuid (); } [डेटामेम्बर (नाम = "आईडी", ऑर्डर = 0)] सार्वजनिक गुड आईडी {प्राप्त करें; निजी सेट; } सार्वजनिक शून्य सेव () {// serialize} सार्वजनिक शून्य लोड () {// deserialize}}
मेरे पास इसके बहुत से व्युत्पन्न वर्ग हैं, यहां एक का एक उदाहरण है:
[डेटाकॉन्ट्रक्ट (नाम = "मायडोमेन ऑब्जेक्ट")] सार्वजनिक वर्ग MyDomainObject: SerializableDomainObject & lt; MyDomainObject & gt; {सार्वजनिक MyDomainObject () {} सार्वजनिक MyDomainObject (स्ट्रिंग का नाम) {name = name; } [डेटामेम्बर (ऑर्डर = 1)] सार्वजनिक स्ट्रिंग नाम {get; निजी सेट; }}
यहां एक बार क्रमबद्ध किया गया आउटपुट है:
& lt; MyDomainObject xmlns = "http://schemas.datacontract.org/2004/07/ डोमेनऑब्जेक्ट्स "xmlns: i =" http://www.w3.org/2001/XMLSchema-instance "& gt; & LT; _x003C_ID_x003E_k__BackingField & gt; 2b3c00f6-1b15-4a6b-bd6c-a1f447ea5a34 & lt; / _ x003C_ID_x003E_k__BackingField & gt; & LT; नाम & gt; AName & lt; / नाम & gt; & Lt; / MyDomainObject & gt; P> ऐसा इसलिए है क्योंकि आपने संपत्ति के लिए सेटर को private
के रूप में घोषित किया है - क्योंकि यह निजी है, डेटा कंट्रैक्ट्रेसेलाइज़र सीरियललाइजिंग है बैकिंग फ़ील्ड और इसके नाम का उपयोग करते हुए संपत्ति का स्थान।
डेटा कंट्रैक्ट्रेसेरियलाइज़र खुशी से किसी भी ऐसे सदस्यों को सीरियल कर देगा जो आपसे यह पूछते हैं लेकिन भाषा के शब्दों के संबंध में। यह आमतौर पर सबसे अच्छा है कि आप अपने डेटा अनुबंध को और बहुत सी दृश्यता नियंत्रण के बिना घोषित कर सकें, क्योंकि सेवा और क्लाइंट के बीच संदेश अनुबंध सरल और उपभोग करना आसान होना चाहिए। खुला और अप्रतिबंधित डेटा अनुबंध बनाएँ परंतु अपने ऑपरेशन अनुबंधों को लॉक करें।
Comments
Post a Comment