У меня есть (много сокращенный) класс вроде этого:.NET XmlSerializer: Сериализация когда свойство сеттер имеет дополнительный код
public class Widget
{
public List<Widget> SubWidgets { get; set; }
public Widget ParentWidget { get; set; }
private double _ImportantValue;
public double ImportantValue
{
get { return _ImportantValue; }
set
{
_ImportantValue = value;
RecalculateSubWidgets();
}
}
}
Когда десериализаций, я не хочу, чтобы RecalculateSubWidgets. Каков наилучший способ справиться с этой ситуацией? Единственное, что мне удалось придумать, - это установить «глобальную» переменную, в которой говорится, что я десериализую и пропустил вызов RecalculateSubWidgets() в этом случае, но это кажется ультра-kludgy.
Вы можете использовать пользовательскую сериализацию, реализуя ISerializable: https://msdn.microsoft.com/en-us/library/system.runtime.serialization.iserializable(v=vs.110).aspx – Kevin