Как работы сериализации в .NET

Попробуйте этот код ( 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

5
задан Adam Driscoll 21 January 2009 в 19:26
поделиться

3 ответа

Это полностью зависит от механизма, который Вы используете для сериализации.

Если Вы используете XmlSerialization, то да, метод set называют.

При использовании сериализации контракта данных (DataContractSerialization) затем, метод считывания/метод set назовут при применении атрибута DataMember к свойству (не к его полю поддержки).

При использовании исходного механизма сериализации в.NET (реализация IFormatter) затем, этот сценарий не возможен, потому что это только сериализирует значения, сохраненные в полях.

7
ответ дан 14 December 2019 в 09:02
поделиться

Вы говорите о Сериализации XML или 'регулярной' сериализации (мыло / двоичный файл), так как-afaik-эти 2 метода сериализации отличаются.

AFAIK при использовании BinaryFormatter или SoapFormatter, полей, сериализируются/десериализовываются, а не свойства.
На десериализации я полагаю, что специальный конструктор с 2 аргументами, который имеет аргументы SerializationInfo & StreamingContext, используется.

Но, ничто не препятствует Вам того, чтобы брать под свой контроль процесс сериализации путем реализации интерфейса ISerializable. Затем если Вы хотите то свое значение, установлен с помощью свойства, я думаю, что можно отлично сделать так.

0
ответ дан 14 December 2019 в 09:02
поделиться

Я знаю не прямой ответ на Ваш вопрос, и Вы уже получили ответ, который Вы искали. Но я не хотел отказывать в этом. Можно посмотреть на источники Библиотеки базовых классов с помощью Отражателя. Это - отличный способ понять больше о внутренностях платформы .NET и расширить Ваше знание.

0
ответ дан 14 December 2019 в 09:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: