У меня есть ObservableCollection, который TypeOf UITestCaseElement:Уничтожение ObservableCollection убивает события?
public ObservableCollection<UITestCaseElement> TestCases = new ObservableCollection<UITestCaseElement>();
public class UITestCaseElement : IDisposable
{
public int UniqueIdentifier { get; set; }
public string TestCaseName { get; set; }
public string TestCaseDescription { get; set; }
public int RepeatCount { get; set; }
[XmlIgnore]
public int NumOfRuntimes { get; set; }
public bool IsActive { get; set; }
[XmlIgnore]
public Testcases.AbstractTestCase TestObject { get; set; }
[XmlIgnore]
public OMS4Driver.DeviceObject DeviceObject { get; set; }
[XmlIgnore]
public OMS4Driver.ClientObject ClientObject { get; set; }
[XmlIgnore]
public OMS4Driver.Generic.CameraSelect SelectedCamera { get; set; }
public void Dispose() { }
}
И вот так я открыть сгенерированный XML:
private void mnuLoadConfig_Click(object sender, EventArgs e)
{
var serializer = new XmlSerializer(typeof(System.Collections.ObjectModel.ObservableCollection<UITestCaseElement>));
using (var reader = new StreamReader(@"C:\Users\xxx\Desktop\test.xml"))
{
_tcMngr.TestCases = (System.Collections.ObjectModel.ObservableCollection<UITestCaseElement>)serializer.Deserialize(reader);
}
}
Если коллекция неоспоримым изменилась, она запускает событие в основной форме начиная с некоторой обработки в пользовательском интерфейсе.
Все работает нормально (использование, экспорт), но как только я де-сериализую xml-файл и копирую ObservableCollection, события ObservableCollection больше не будут запущены. Если я отлаживаю экземпляр TestCases, то все изменения можно найти в этой коллекции.
Почему?
спасибо!
Это означает, что Serializer не только вставляет новые элементы, но и перезаписывает даже делегатов коллекции, даже если в XML-файле нет содержимого? – AllDayPiano
Ну, вы создаете новую коллекцию, которая полностью заменит другую. Он ничего не перезаписывает, он только начинается снова. –
Ох, с ***, ты прав! Это было глупо! ... Полагаю, пора обедать! – AllDayPiano