Сериализация IEnumerator <T> созданный возврат урожая использования

Есть ли способ сериализировать (использование BinaryFormatter) IEnumerator<T> это создается, когда я использую yield returns? Автоматически сгенерированный класс не отмечен Serializable.

5
задан Robert Harvey 1 July 2010 в 22:10
поделиться

3 ответа

Сгенерированный компилятором enumerable не имеет атрибута [Serializable], поэтому, нет, из коробки вы не сможете этого сделать.

Вы должны спросить себя: "Почему я использую yield здесь, и что он означает, когда этот объект будет десериализован?"

Если это удобно, вы можете использовать его для заполнения типа, который может быть сериализован. Если вы используете его для выполнения тяжелой работы в ленивой манере, вам стоит подумать о том, чтобы изменить свой дизайн для сериализации/десериализации информации, необходимой для выполнения этой тяжелой работы.

3
ответ дан 14 December 2019 в 13:25
поделиться

Просто выполните итерацию перечислителя и сериализуйте каждый возвращенный экземпляр.

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

Какой класс вы используете для реализации IEnumerable? List должен сериализоваться нормально.

Попробуйте вызвать ToList() на вашей коллекции перед ее сериализацией.

3
ответ дан 14 December 2019 в 13:25
поделиться
Другие вопросы по тегам:

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