मेरे पास वास्तव में एक सरल अनुकूलित संग्रह प्रकार है जो सूची <> से प्राप्त होता है और संग्रहडेटाकंट्रैक्ट का उपयोग करता है।क्या डब्लूसीएफ और डेटाकंट्रैक्टसेरियलाइज़र कलेक्शनडाटा कंट्रैक्ट-सजाए गए संग्रह प्रकारों को क्रमबद्ध करें?
जब मैं DataContractSerializer.WriteObject का उपयोग इसे क्रमबद्ध करने के लिए करता हूं, तो यह संग्रहडेटा कंट्रैक्ट विशेषता का सम्मान करता है जिस तरह से मैं अपेक्षा करता हूं; हालांकि, जब मैं इसे डब्लूसीएफ विधि के लिए रिटर्न प्रकार के रूप में उपयोग करता हूं, तो मुझे डिफ़ॉल्ट ArrayOfFoo मिलता है।
मुझे आश्चर्य है कि क्या कुछ सजावट है जो मुझे सेवा अनुबंध में याद आ रही है।
विवरण:,
<FooList>
<Foo>
<BarString>myString1</BarString>
</Foo>
</FooList>
लेकिन अगर मैं एक है:
[DataContract(Namespace = "")]
public class Foo
{
[DataMember]
public string BarString { get; set; }
}
[CollectionDataContract(Namespace = "")]
[Serializable]
public class FooList : List<Foo> {}
मैं सिर्फ एक फू का दृष्टांत और फिर इसे क्रमानुसार करने DataContractSerializer.WriteObject उपयोग करते हैं, मैं आपकी आशा से मिलता है इस तरह की विधि के साथ सेवा ...
[ServiceContract Name = "MyService"]
public interface IMyService
{
[OperationContract, WebGet(UriTemplate = "foos/")]
FooList GetAllFoos();
}
और फिरके लिए एक GET करें, मैं इस मिल:
<ArrayOfFoo>
<Foo>
<BarString>myString1</BarString>
</Foo>
</ArrayOfFoo>
मैं भी CollectionDataContract विशेषता में निर्दिष्ट नाम = "MyFooListName" की कोशिश की है। वही परिणाम: DataContractSerializer ज्ञापन प्राप्त करता है; डब्ल्यूसीएफ नहीं करता है।
मुझे लगता है, हाँ, यह सूचियों को सरणी में परिवर्तित करता है। –
यदि आप संग्रह प्रकार को कस्टमाइज़ नहीं करते हैं तो आप सही हैं कि एक सूची को ऐरे में क्रमबद्ध किया जाता है; जो मैं समझने की कोशिश कर रहा हूं वह यह है कि डब्ल्यूसीएफ को मेरे कलेक्शनडाटा कंट्रैक्ट का सम्मान करने का कोई तरीका है या नहीं। – pisomojado