serialization WCF के साथ अपने आधार प्रकार के रूप में एक व्युत्पन्न प्रकार को क्रमबद्ध कैसे करें




datacontractserializer datacontract (2)

क्या आप .NET 4.0 का प्रयोग कर रहे हैं? आप इस के लिए DataContractResolver का उपयोग कर सकते हैं यदि आप हैं:

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractresolver.aspx

यह मूल रूप से भी है कि प्रॉटी प्रकारों के लिए डेटा कंटैंट्रैक्ट्रॉल्वर के लिए इकाई फ़्रेमवर्क 4.0 क्या करता है।

यहां एक उदाहरण है: http://blogs.msdn.com/b/youssefm/archive/2009/06/05/introducing-a-new-datacontractserializer-feature-the-datacontractresolver.aspx

(लिंक में डिसेरीअलियाज़बेसबेसरसोलर देखें)।

संपादित करें: यदि आप .NET 4.0 का उपयोग नहीं कर रहे हैं, तो मुझे लगता है कि आपका अगला सबसे अच्छा विकल्प एक डाटा कंट्रैक्टसंरोगेट है: http://msdn.microsoft.com/en-us/library/system.runtime.serialization.idatacontractsurrogate.aspx ... तो आप हाथ से सीरियलाइजेशन को नियंत्रित कर सकते हैं, लेकिन यह गंदा हो सकता है।

दोनों को आपके डाटा कंट्रेक्ट सेरियलाइज़र के कन्स्ट्रक्टर में पारित किया गया है और डॉकसीन्ट्रैक्टसिरियालाइजरऑपरेशन ब्रेवरी के जरिए WCF के लिए कॉन्फ़िगर किया जा सकता है: http://msdn.microsoft.com/en-us/library/system.servicemodel.description.datacontractserializeroperationbehavior.aspx

मेरे पास कुछ ऑब्जेक्ट्स के साथ एक सामान्य लाइब्रेरी है उसके बाद मेरे पास एक सेवा प्रोजेक्ट है जो आम लाइब्रेरी का संदर्भ देता है और सामान्य लाइब्रेरी में ऑब्जेक्ट से कुछ व्युत्पन्न प्रकार बनाता है।

मैं चाहता हूं कि मेरी सेवा व्युत्पन्न प्रकारों को क्रमबद्ध करे क्योंकि उनके आधार प्रकार सामान्य पुस्तकालय में परिभाषित हों।

मैं सामान्य लाइब्रेरी में ऑब्जेक्ट पर ज्ञात टाइप का उपयोग नहीं कर सकता क्योंकि मैं नहीं चाहता कि सामान्य पुस्तकालय सेवा असेंबलियों को संदर्भित करे।

तो कैसे मैं डब्ल्यूसीएफ व्युत्पन्न प्रकार उनके आधार प्रकार के रूप serialize कर सकते हैं?

काश मैं ऐसा कुछ कर सकता हूं ...

[डेटा कंटैक्ट्रैक्ट (सीरियलइज़ैस टाईप = टाइपफ (बेसटाइप))] सार्वजनिक श्रेणी के डेरिवेट टाइप: बेसटाइप {}

क्या ऐसा कुछ संभव है?


हमने इस समस्या को "विरासत में मिली वर्ग [डेटा कंट्रक्ट (नाम =" बेस क्लास ") द्वारा निर्धारित करके" इस समस्या का हल "किया है यह भी काम करता है, यदि विरासत में मिली कक्षा आंतरिक और किसी अन्य परियोजना में परिभाषित है

आशा करता हूँ की ये काम करेगा।





datacontract