8
我已經閱讀了許多關於已知類型的文章,並且我相信我的例子應該可以工作。但事實並非如此。我越來越對反序列化下面的例外,不明白爲什麼:在第1行位置2DataContractSerializer,KnownType和繼承
錯誤的命名空間「http://schemas.datacontract.org/2004/07/ConsoleApplication2」 ..遇到「元素」名爲「C」期待元素「A」,命名空間'http://schemas.datacontract.org/2004/07/ConsoleApplication2'。
using System;
using System.Runtime.Serialization;
using System.Xml;
using System.IO;
namespace ConsoleApplication2
{
[DataContract][KnownType(typeof(C))]class A { }
[DataContract]class C : A { }
class Program
{
static void Main(string[] args)
{
A a = new C();
string data;
var serializer = new DataContractSerializer(a.GetType());
using (var sw = new StringWriter())
{
using (var xw = new XmlTextWriter(sw))
serializer.WriteObject(xw, a);
data = sw.ToString();
}
serializer = new DataContractSerializer(typeof(A));
using (var sr = new StringReader(data))
using (var xr = new XmlTextReader(sr))
a = (A)serializer.ReadObject(xr);
}
}
}
我在想什麼?
非常感謝!真的行。 – UserControl 2009-07-24 13:30:01