एक निर्माता हमेशा से आह्वान किया जाता है। मेरे पास आमतौर पर दो रचनाकार होते हैं। क्रमबद्धता के लिए एक (डिफ़ॉल्ट निर्माता) और सभी "नियमित" कोड के लिए एक:
[DataContract]
public class Component
{
// for JSON.NET
protected Component()
{
}
public Component(allMandatoryFieldsHere)
{
// I'm doing some magic here.
}
}
कि जिस तरह से मैं भी सुनिश्चित करें कि देव सभी जानकारी जो आवश्यक हैं निर्दिष्ट कर सकते हैं।
हालांकि, मैं वास्तव में अनुशंसा नहीं करता कि आप डीटीओ के अलावा कुछ भी उपयोग करते हैं, जबकि सूचनाओं को स्थानांतरित करते समय अन्यथा आपकी वस्तुओं के encapsulation को रोकने के लिए संभव है (कोई भी किसी भी क्षेत्र के साथ किसी भी क्षेत्र को प्रारंभ कर सकता है)। कुंआ। यदि आप एनीमिक मॉडल के अलावा कुछ भी उपयोग करते हैं।
FormatterServices.GetSafeUninitializedObject
का उपयोग करना इसलिए एक बदसूरत कामकाज है, क्योंकि कोई भी यह नहीं बता सकता कि आप सभी वस्तुओं को एक अनियमित तरीके से बनाते हैं। एक कारण के लिए कन्स्ट्रक्टर प्रारंभिक है। यह बेहतर है कि कक्षाएं बता सकती हैं कि मैंने "सीरियलाइजेशन" कन्स्ट्रक्टर प्रदान करके असली कन्स्ट्रक्टर को कॉल करना ठीक नहीं है जैसा कि मैंने सुझाव दिया था।
संभव नहीं AFAIK। एक उदाहरण बनाते समय एक कन्स्ट्रक्टर हमेशा निष्पादित किया जाता है। – Maarten
@ मार्टन http://msdn.microsoft.com/en-us/library/system.runtime.serialization.formatterservices.getsafeuninitializedobject.aspx –
Thanx! मैंने आज कुछ सीखा :-) – Maarten