जैसा कि मैं समझता हूं कि आपको डेटामेम्बर विशेषता की ऑर्डर प्रॉपर्टी का उपयोग करना चाहिए ताकि चीजों को तोड़ने के क्रम में परिवर्तन के बिना डेटा अनुबंध में चीजें जोड़ सकें, लेकिन जब आप आधार और उप प्रकार के होते हैं तो आप इसे कैसे संपर्क कर सकते हैं?बेस क्लास और व्युत्पन्न कक्षाओं के साथ डब्ल्यूसीएफ डेटा अनुबंध - बेस क्लास में बदलाव के परिणाम क्या हैं?
अगर मैं इस जैसे datacontracts है:
[DataContract]
[KnownType(typeof(ChildDto))]
public class BaseDto
{
[DataMember (Name = "Property", Order = 0)]
public string Property { get; set; }
[DataMember (Name = "Property2", Order = 1)]
public string Property2 { get; set; }
}
[DataContract]
public class ChildDto:BaseDto
{
[DataMember (Name = "Property3", Order = 2)]
public string Property3 { get; set; }
[DataMember (Name = "Property4", Order = 3)]
public string Property4 { get; set; }
}
और मैं BaseDto
के लिए एक नया डेटा सदस्य प्रॉपर्टी जोड़ना चाहते हैं, किस क्रम मैं संपत्ति ताकि चीजें नहीं टूटते देना चाहिए? या मुझे BaseDto
पर कुछ भी नहीं जोड़ना चाहिए? क्या मैं ChildDto
पर चीजें जोड़ सकता हूं?
जानना उत्सुक है, क्या ऑर्डर वास्तव में आवश्यक है? आप किस उद्देश्य के लिए या आपके सेवा क्लाइंट इसका उपयोग कर रहे हैं? – thewpfguy
@thewpfguy अगर आप भविष्य में अपना अनुबंध अपडेट करते हैं तो ऑर्डर की आवश्यकता होती है। डिफ़ॉल्ट रूप से ऑर्डर वर्णानुक्रमित होगा लेकिन आप यह सुनिश्चित करने के लिए ऑर्डर निर्दिष्ट कर सकते हैं कि अनुबंध का नया संस्करण अभी भी पुराने ग्राहकों द्वारा उपयोग किया जा सकता है जो पुराने संपर्क का उपयोग करते हुए नए डेटा को अनदेखा कर देगा। यदि परिवर्तन के कारण किसी अन्य डेटा द्वारा पहले इस्तेमाल किए गए स्थान पर नया डेटा दिखाई देता है तो पुराना क्लाइंट या तो इसका उपयोग करने में सक्षम नहीं होगा या गलत तरीके से इसका उपयोग करेगा। –