Я думаю, что это случай тонкого контроля, требующего больших усилий с вашей стороны. Другими словами, автоматическое свойство по умолчанию будет иметь сериализуемое вспомогательное поле. Если вам нужно что-то кроме значения по умолчанию, вы не можете использовать автоматическое свойство.
Я думал, что использование [field:NonSerialized]
против свойства может работать, но это не так. Спецификация C # явно не вызывает сериализуемость поля поддержки, но она включает в себя это (10.7.3):
The following example:
public class Point {
public int X { get; set; } // automatically implemented
public int Y { get; set; } // automatically implemented
}
is equivalent to the following declaration:
public class Point {
private int x;
private int y;
public int X { get { return x; } set { x = value; } }
public int Y { get { return y; } set { y = value; } }
}
Таким образом, вспомогательное поле сериализуемо (по умолчанию).