Я использую SimpleMVVM, и при редактировании объекта SimpleMVVM создает новый объект Model и объект Copy. Исходный объект Model клонируется в объект Copy с помощью Newtonsoft.Json.JsonConvert.
Вот фактический код:
Copy = Model.Clone();
...
public static T Clone<T>(this T obj)
{
var settings = new JsonSerializerSettings
{
PreserveReferencesHandling = PreserveReferencesHandling.All
};
var json = JsonConvert.SerializeObject(obj, settings);
var result = JsonConvert.DeserializeObject<T>(json, settings);
return result;
}
У меня возникла проблема, когда метод Clone пытается десериализовать DataView. Ошибка:
Исключение типа «System.ArgumentException» возникло в Newtonsoft.Json.dll, но не было обработано в пользовательском коде.
Я не уверен, как справиться с этой ошибкой, поскольку единственное, что может вызвать ошибку, — это поиск (получение) этого свойства:
/// <summary>
/// Dataview of SQL Results Table
/// </summary>
[XmlIgnore]
public DataView TableDataView
{
get
{
return _TableDataView;
}
set
{
_TableDataView = value;
// Add listener for changes to the TableDataView
_TableDataView.ListChanged += new ListChangedEventHandler(TableDataViewChanged);
TableDataViewIsDirty = false;
NotifyPropertyChanged(m => m.TableDataView);
}
}
private DataView _TableDataView = new DataView();
Есть ли какая-то проблема с попыткой десериализовать DataView с помощью JSON, и если да, то есть ли способ обойти это? В качестве альтернативы, есть ли способ указать, что свойство (TableDataView) НЕ должно быть включено в процесс Serialize\Deserialize (что-то вроде флага [XmlIgnore])?