को क्रमानुसार मैं निम्न स्वरूप पर वस्तुओं से डायनामिक रूप से तैयार एक्सएमएल नोड्स का एक सेट का निर्माण करने की जरूरत है:एक्सएमएल गतिशील वस्तु
<Root>
<Name>My Name</Name>
<DynamicValues>
<DynamicValue1>Value 1</DynamicValue1>
<DynamicValue2>Value 2</DynamicValue2>
</DynamicValues>
</Root>
DynamicValues
-tag भीतर नोड्स के नाम पहले से ज्ञात नहीं हैं। मेरे प्रारंभिक सोचा था कि यह एक Expando Object, जैसे का उपयोग कर संभव हो जाना चाहिए: यह XML-क्रमानुसार
var root = new Root
{
Name = "My Name",
DynamicValues = new ExpandoObject()
};
root.DynamicValues.DynamicValue1 = "Value 1";
root.DynamicValues.DynamicValue2 = "Value 2";
और उसके बाद:
string xmlString;
var serializer = new DataContractSerializer(root.GetType());
using (var backing = new StringWriter())
using (var writer = new XmlTextWriter(backing))
{
serializer.WriteObject(writer, root);
xmlString = backing.ToString();
}
मूल्यों के साथ यह आरंभ से
[DataContract]
public class Root
{
[DataMember]
public string Name { get; set; }
[DataMember]
public dynamic DynamicValues { get; set; }
}
हालांकि, जब मैं इसे चलाता हूं, मुझे एक सीरियलाइजेशन एक्सेप्शन मिलता है:
"प्रकार डेटा अनुबंध नाम साथ 'System.Dynamic.ExpandoObject' 'ArrayOfKeyValueOfstringanyType: http://schemas.microsoft.com/2003/10/Serialization/Arrays' की उम्मीद नहीं है।
, KnownTypeAttribute विशेषता का उपयोग करके या उन्हें DataContractSerializer के लिए पारित किया जाना जाता है प्रकार के सूची में जोड़ने से उदाहरण के लिए "- एक DataContractResolver उपयोग पर विचार करें या किसी प्रकार नहीं जाना जाता है प्रकार की सूची को स्थिर में जाना जाता है जोड़ें। कोई भी विचार मैं यह कैसे प्राप्त कर सकते हैं
यह वास्तव में क्रमानुसार करता अपवाद फेंकने के बिना, लेकिन में मेरी अपेक्षा के अनुसार (प्रश्न में उदाहरण एक्सएमएल देखें)। मुझे 'KeyValueOfstringanyType' प्रकार के नोड्स मिलते हैं। –
@ ओलावहॉगेन, मैंने अपना जवाब अपडेट कर लिया है। –
महान काम करता है। धन्यवाद! –