Tôi đã đọc nhiều bài viết về các loại đã biết và tôi tin rằng ví dụ của tôi sẽ hoạt động. Nhưng nó không. Tôi nhận được ngoại lệ sau về deserialization và không hiểu lý do tại sao:DataContractSerializer, KnownType và thừa kế
Lỗi ở vị trí dòng 1 2. Yêu cầu yếu tố 'A' từ không gian tên 'http://schemas.datacontract.org/2004/07/ConsoleApplication2' .. Đã gặp 'Element' với tên 'C', không gian tên '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);
}
}
}
Tôi đang thiếu gì?
Cảm ơn rất nhiều! Nó thật sự có hiệu quả. – UserControl