बस आंद्रेई के जवाब पर व्याख्या करने के लिए और मेरे अनुभव साझा करते हैं, मैं सिर्फ एक मुद्दा है कि मैं अंत में CollectionDataContract का उपयोग कर हल हो गई माध्यम से चला गया। असल में, आदेश में एक विशेष प्रणाली के साथ इंटरफेस करने में, मैं सक्षम होने के लिए भेजने के लिए और प्रारूप की एक्सएमएल प्राप्त करना चाहता था:
<SomeMessageList>
<Message>
<ID>blah</ID>
<data1>blah</data1>
<data2>etc.etc.</data2>
</Message>
<Message>
<ID>blah</ID>
<data1>blah</data1>
<data2>etc.etc.</data2>
</Message>
//any number of repeated <Message> here
</SomeMessageList>
हालांकि, अगर मैं एक सरणी या एक सूची वस्तु का इस्तेमाल किया, रूट टैग हमेशा कहा जाता था ArrayOfMessage। और अगर मैंने एक वर्ग बनाया है जिसमें संदेश ऑब्जेक्ट्स की एक सरणी है (जिसे एमएसएललिस्ट कहा जाता है), तो डब्ल्यूसीएफ मिश्रण में एक अतिरिक्त टैग के रूप में जोड़ देगा, जिसे मैं छुटकारा पाने के लिए कोई रास्ता नहीं ढूंढ सका। तो यह की तरह दिखाई देता है |:
<SomeMessageList>
<MsgList>
<Message>
<ID>blah</ID>
<data1>blah</data1>
<data2>etc.etc.</data2>
</Message>
//any number of repeated <Message> here
</MsgList>
</SomeMessageList>
तो CollectionDataContract बस मुझे जड़ सूची तत्व के नाम को नियंत्रित करने के लिए एक सरल मार्ग प्रशस्त किया।
स्रोत
2012-03-22 17:13:53
दिलचस्प .... – Seva
धन्यवाद! मैंने इसका इस्तेमाल किया, लेकिन सहायता पृष्ठ पीढ़ी के काम को बनाने के लिए बेस कन्स्ट्रक्टर को कॉल करने की भी आवश्यकता है - इसलिए आपके उदाहरण में: 'सार्वजनिक उपयोगकर्ता() {}' के साथ 'सार्वजनिक उपयोगकर्ता(): आधार() {}'। –
@IanGrainger कुछ और अस्वस्थ होना चाहिए - अन्यथा निर्दिष्ट नहीं होने पर नो-एर्ग बेस कन्स्ट्रक्टर स्वचालित रूप से कॉल किया जाता है .. – user2864740