Я сталкивался с этим вопросом на трансцендере:
Что следует применять к полю, если его значение не требуется при десериализации?
Me = [NonSerialized], ANSWER = [OptionalField]
Моя реакция на кишечник была NonSerialized, но Transcender говорит, что я неправ.У меня есть хорошая идея, на что обращать внимание в отношении атрибута [Nonseralized], но все же мне бы очень хотелось, чтобы это прояснилось.
Насколько я могу судить, первое имеет отношение к конфликтам версиймежду новыми и более старыми версиями одной и той же сборки.Последнее больше касается не сериализации поля FULLSTOP.Есть ли что-нибудь еще, что могло бы отделить этих двоих?MSDN на самом деле мало говорит об этом, поскольку они оба используются в BinaryFormatters и SoapFormatter с XMLFormatter с использованием XMLIgnoreAttribute.
Мой второй вопрос: можете ли вы смешивать и сопоставлять один из двух атрибутов?Я еще не использовал их.
Просто добавлю это, но мой ответ как-то связан со способом [OnDeserialized] и реализованным интерфейсом IdeserilizationCallback?
ОБНОВЛЕНИЕ:
Я знаю, что необязательный атрибут поля не сериализует значение, содержащееся в элементе данных, но NonSerialized даже не сериализует элемент данных или его значение.