Попробуйте этот код ( Shellcheck -clean) после правильной установки badfile
и bad_files_dir
:
#! /bin/bash
badfile=FILE_013.dat # The bad file to be moved out
bad_files_dir=../badfilesdir # The directory to receive the bad file
movedfile=
for file in FILE_[0-9][0-9][0-9].dat ; do
if [[ -n $movedfile ]] ; then
mv -- "$file" "$movedfile"
movedfile=$file
elif [[ $file == "$badfile" ]] ; then
mv -- "$file" "$bad_files_dir"
movedfile=$file
fi
done
Это полностью зависит от механизма, который Вы используете для сериализации.
Если Вы используете XmlSerialization, то да, метод set называют.
При использовании сериализации контракта данных (DataContractSerialization) затем, метод считывания/метод set назовут при применении атрибута DataMember к свойству (не к его полю поддержки).
При использовании исходного механизма сериализации в.NET (реализация IFormatter) затем, этот сценарий не возможен, потому что это только сериализирует значения, сохраненные в полях.
Вы говорите о Сериализации XML или 'регулярной' сериализации (мыло / двоичный файл), так как-afaik-эти 2 метода сериализации отличаются.
AFAIK при использовании BinaryFormatter или SoapFormatter, полей, сериализируются/десериализовываются, а не свойства.
На десериализации я полагаю, что специальный конструктор с 2 аргументами, который имеет аргументы SerializationInfo & StreamingContext, используется.
Но, ничто не препятствует Вам того, чтобы брать под свой контроль процесс сериализации путем реализации интерфейса ISerializable. Затем если Вы хотите то свое значение, установлен с помощью свойства, я думаю, что можно отлично сделать так.
Я знаю не прямой ответ на Ваш вопрос, и Вы уже получили ответ, который Вы искали. Но я не хотел отказывать в этом. Можно посмотреть на источники Библиотеки базовых классов с помощью Отражателя. Это - отличный способ понять больше о внутренностях платформы .NET и расширить Ваше знание.