0
我試圖讓DataContract Serializer與我的一個類一起工作。DataContractSerializer問題
這就是:
public class MyOwnObservableCollection<T> : ObservableCollection<T>, IDisposable
where T : IObjectWithChangeTracker, INotifyPropertyChanged
{
protected List<T> removedItems;
[DataMember]
public List<T> RemovedItems
{
get { return this.removedItems;}
set { this.removedItems = value;}
}
// Other code removed for simplification
// ...
//
}
要明白,當你從的ObservableCollection中刪除項目的RemovedItems列表就會自動填充這一點很重要。
現在序列化使用DataContractSerializer的這個類的一個實例,在下面的代碼中removedItems列表中的一個元素:
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfTest xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="MyNameSpace" />
爲什麼:
MyOwnObservableCollection<Test> _Test = new MyOwnObservableCollection<Test>();
DataContractSerializer dcs = new DataContractSerializer(typeof(MyOwnObservableCollection<Test>));
XmlWriterSettings settings = new XmlWriterSettings() { Indent = true };
string fileName = @"Test.xml";
Insurance atest = new Test();
atest.Name = @"sfdsfsdfsff";
_Test.Add(atest);
_Test.RemoveAt(0); // The Iitem in the ObservableCollection is moved to the RemovedItems List/
using (var w = XmlWriter.Create(fileName, settings))
{
dcs.WriteObject(w, _Test);
}
什麼也沒有在XML文件中結束這個公共財產被忽略?我在這裏錯過了什麼?
TIA。
你能提供的示例代碼 – toxicate20
良好的漁獲物。我並沒有像使用只讀的ObservableCollection那樣建議強硬。但這個想法在這裏。 –