2009-11-27 13 views
6

DataContract बिना वर्ग के बीच अंतर क्या विशेषताओं है प्रभावित करते हैं:DataContract और DataMember जिम्मेदार बताते हैं - कैसे वे प्रकार

public class BankOperationResult 
{   
    public int CurrentAmount { get; set; } 
    public bool Success { get; set; } 
} 

और DataContract के साथ एक ही कक्षा विशेषताओं:

[DataContract] 
public class BankOperationResult 
{   
    [DataMember] 
    public int CurrentAmount { get; set; } 
    [DataMember] 
    public bool Success { get; set; } 
} 

मेरा मतलब है, WCF व्यवहार करता है एन्कोडिंग इत्यादि के दौरान उन दो प्रकारों को अलग-अलग तरीके से?

के साथ या उन विशेषताओं मेरी WCF सेवा काम करता है बिना

...

धन्यवाद, पावेल

उत्तर

10

.NET 3.5 SP1 से पहले यदि आप एक DataMember साथ अपनी संपत्ति को चिह्नित नहीं किया विशेषता यह में उजागर नहीं किया गया था डब्ल्यूएसडीएल और धारावाहिक नहीं है। .NET 3.5 SP1 से शुरू होने से DataContractSerializer स्वचालित रूप से सभी सार्वजनिक गुणों को शामिल कर देगा, इसलिए अब आपको इन विशेषताओं के साथ उन्हें सजाने की आवश्यकता नहीं है।

+13

दुर्भाग्यवश, यह 3.5 एसपी 1 मामले में इतना आसान * नहीं है, लेकिन यह मूल विचार है। किसी भी डेटाकंट्रैक्ट या डेटामेम्बर विशेषताओं को आपकी कक्षा में परिभाषित किए बिना, सभी फ़ील्ड्स * और * गुणों को एक्सएमएल में क्रमबद्ध किया जाएगा और इसमें 'सार्वजनिक int MyValue {get; के रूप में स्वचालित गुणों के लिए निजी ऑटो-जनरेटिंग बैकिंग स्टोर फ़ील्ड शामिल हैं; सेट; } 'और उन्हें नाम' k__BackingField 'नाम दिया जाएगा। डेटाकंट्रैक्ट और डेटामेम्बर विशेषताओं को स्पष्ट रूप से डेटाकंट्रैक्टसेरियलाइज़र को निजी क्षेत्र क्रमबद्धता से आगे ले जाएगा। –

संबंधित मुद्दे