मैंकैसे सी # में अक्रमांकन दौरान कस्टम वस्तु के लिए एक्सएमएल गुण परिवर्तित करने के लिए XmlSerializer
InvalidCastException: IdTag
को System.String जबकि प्रयास कर: मूल्य एक परिवर्तनीय वस्तु नहीं है एक्सएमएल विशेषता deserialize करने के लिए।
<?xml version="1.0" encoding="windows-1250"?>
<ArrayOfItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Item Name="Item Name" ParentId="SampleId" />
</ArrayOfItem>
नमूना कक्षाएं:
public class Item
{
[XmlAttribute]
public string Name { get; set; }
[XmlAttribute]
public IdTag ParentId { get; set; }
}
[Serializable]
public class IdTag
{
public string id;
}
अपवाद Convert.ToType()
विधि (जो XmlSerializer
से कहा जाता है) से फेंक दिया जाता है
यहाँ नमूना एक्सएमएल है। AFAIK IdTag
में कनवर्ट करने के लिए System.String
के लिए IConvertible
इंटरफ़ेस को "कार्यान्वित" करने का कोई तरीका नहीं है। मुझे पता है कि मैं प्रॉक्सी प्रॉपर्टी को कार्यान्वित कर सकता हूं i.e:
public class Item
{
[XmlAttribute]
public string Name {get; set;}
[XmlAttribute("ParentId")]
public string _ParentId { get; set; }
[XmlIgnore]
public IdTag ParentId
{
get { return new IdTag(_ParentId); }
set { _ParentId = value.id; }
}
}
क्या कोई अन्य तरीका है?
निश्चित रूप से एक सुधार - गेटटर से क्लास कन्स्ट्रक्टर के मालिक होने के लिए 'नया आईडीटाग (..) 'स्थानांतरित करता है। धन्यवाद। –