का उपयोग करके deserialized नहीं किया जा रहा है मुझे DataContractSerializer
के साथ कोई समस्या है। मैं एएसपी.NET वेब सेवा द्वारा लौटाए गए एक्सएमएल से क्लास इंस्टेंस बनाने के लिए इसका इस्तेमाल करता हूं। लेकिन वास्तव में डेटा का स्रोत यहां महत्वपूर्ण नहीं है। पूरे मामले को डीबग करना आसान बनाने के लिए मैंने केवल सीरियलाइजेशन के साथ एक सरल परीक्षण प्रोजेक्ट बनाया है और समस्या अभी भी होती है।कुछ गुणों को DataContractSerializer
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<GetTestURL p1:type="MyApp.GetTestUrlInfo" xmlns:p1="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices">
<TestURL>http://bing.com</TestURL>
<UserCount p1:type="Edm.Int32">1</UserCount>
<InitialCount p1:type="Edm.Int32">1</InitialCount>
<AverageExecutionTime p1:type="Edm.Int32">43</AverageExecutionTime>
</GetTestURL>
वर्ग मैं करने के लिए XML deserialize करने के लिए कोशिश कर रहा हूँ:
[DataContract(Name = "GetTestURL", Namespace = "http://schemas.microsoft.com/ado/2007/08/dataservices")]
public class TestInfo
{
[DataMember(Name = "TestURL")]
public Uri TestUri { get; private set; }
[DataMember(Name = "UserCount")]
public int UserCount { get; private set; }
[DataMember(Name = "InitialCount")]
public int InitialCount { get; private set; }
[DataMember(Name = "AverageExecutionTime")]
public int AverageExecutionTime { get; private set; }
}
और मेरे क्रमबद्धता सहायक वर्ग:
public static class SerializationHelper<T>
{
private static DataContractSerializer _serializer = new DataContractSerializer(typeof(T));
public static T Deserialize(Stream source)
{
return (T)_serializer.ReadObject(source);
}
}
टेस्ट कोड
यहाँ मेरी एक्सएमएल है:
// Test program
public static void Main()
{
TestInfo info = null;
using (var stream = File.Open("Input.xml", FileMode.Open, FileAccess.Read))
{
info = SerializationHelper<TestInfo>.Deserialize(stream);
}
}
विधि के अंत में brakepoint स्थापित करने के बाद मैं निम्न देखें:
आप देख सकते हैं, दोनों AverageExecutionTime
और InitialCount
deserialized और int
डिफ़ॉल्ट मान नहीं रहे हैं। उन्हें 43
और 1
पर सेट करना चाहिए, क्योंकि ये मान XML में हैं।
यह मेरे लिए और भी अजीब बात है, UserCount
संपत्ति सही हो गई है, लेकिन वास्तव में यह उन दोनों में से भिन्न नहीं है जो बिल्कुल काम नहीं करते हैं। तत्व का नाम केवल एक चीज अलग है।
संभव नकल http://stackoverflow.com/questions/15413468/deserializing-xml-with-datacontractserializer?rq=1 –