Есть ли способ сериализировать (использование BinaryFormatter
) IEnumerator<T>
это создается, когда я использую yield return
s? Автоматически сгенерированный класс не отмечен Serializable
.
Сгенерированный компилятором enumerable не имеет атрибута [Serializable], поэтому, нет, из коробки вы не сможете этого сделать.
Вы должны спросить себя: "Почему я использую yield здесь, и что он означает, когда этот объект будет десериализован?"
Если это удобно, вы можете использовать его для заполнения типа, который может быть сериализован. Если вы используете его для выполнения тяжелой работы в ленивой манере, вам стоит подумать о том, чтобы изменить свой дизайн для сериализации/десериализации информации, необходимой для выполнения этой тяжелой работы.
Просто выполните итерацию перечислителя и сериализуйте каждый возвращенный экземпляр.
Какой класс вы используете для реализации IEnumerable
? List
должен сериализоваться нормально.
Попробуйте вызвать ToList()
на вашей коллекции перед ее сериализацией.