आप DataContractSerializer जानते हैं कि एक Client
Contact
का एक प्रकार है यह बताने के लिए नेड।
ऐसा करने के कई तरीके हैं, लेकिन वे सभी KnownType
विशेषता या ServiceKnownType
विशेषताओं का उपयोग करके घूमते हैं।
KnownType
Client
कक्षा पर डेटाकंट्रैक्टसेरियलाइज़र को बताने के लिए रखा जा सकता है कि यह Contact
का ज्ञात प्रकार है।
[DataContract]
[KnownType(typeof(Client))]
public class Contact{}
KnownType
भी संकेत मिलता है कि जब इस वर्ग serialising आप भी इस दूसरे वर्ग का सामना कर सकते एक वर्ग पर रखा जा सकता।
यदि आप एक DataContract
वर्ग एक संपत्ति है जो एक Contact
है जो वास्तव में एक Client
हो सकती है, तो आपको यह करना चाहते हैं हो सकता है: इस मामले में
[DataContract]
[KnownType(typeof(Client))]
public class Meeting
{
Contact MeetingContact{get;}
}
आप दूर पर KnownType निर्दिष्ट किए बिना मिल सकता है ग्राहक। आप यह भी करना चाहेंगे यदि आपके पास ऐसी संपत्ति है जो संग्रह लौटाती है और आप संग्रह में होने वाले प्रकारों को निर्दिष्ट करना चाहते हैं।
आप, बजाय KnownType के वास्तविक प्रकार को निर्दिष्ट करने की, एक स्थिर तरीका है जिसके नाम से जाना जाता प्रकार के बजाय वापस आ जाएगी का नाम निर्दिष्ट कर सकते हैं:
[DataContract]
[KnownType("GetKnownTypes")]
public class Meeting
{
Contact MeetingContact{get;}
private static Type[] GetKnownType()
{
return new Type[]{typeof(Client)};
}
}
तुम भी configuration file के माध्यम से जाना जाता है के प्रकार का उल्लेख कर सकते हैं।
ServiceKnownTypes एक समान तरीके से काम करते हैं, लेकिन सेवा पर ही निर्दिष्ट कर रहे हैं:
[ServiceKnownType(typeof(Client))]
[ServiceContract()]
public interface IMyServiceContract
{
[OperationContract]
Contact GetContact();
}
यह दूँगी DataContactSerializer जानते हैं कि तरीकों में से किसी भी प्रकार के Client
का एक प्रकार वापस आ सकते हैं की स्थापना की। ज्ञात प्रकारों के समान तरीके से आप सेवा ज्ञात प्रकार प्रदान करने के लिए एक स्थिर विधि का भी उपयोग कर सकते हैं।
धन्यवाद! काम करता है ठीक है – ancdev
कोई समस्या नहीं है। काम कर रहे हैं तो कृपया उत्तर के रूप में स्वीकार करें। – daryal