Я реализовал уровень распространенности для Compact Framework (включая сериализатор, подобный BinaryFormatter
). Я хотел бы иметь возможность сериализовать сгенерированные компилятором классы, которые являются результатом таких вещей, как лямбда-выражения и итераторы, где это необходимо, чтобы, если (например) лямбда-выражение и его закрытые переменные (то есть экземпляр класса отображения) добавляется к событию в сериализуемом объекте, и все закрытые переменные сериализуются, тогда результирующий граф объектов по-прежнему полностью сериализуем.
Допустимо, если экземпляры этих классов могут быть десериализованы только с помощью точно такой же сборки двоичных файлов, из которых они были сериализованы - уровень распространенности в основном предназначен для обеспечения устойчивости в случае неожиданного завершения приложения ( сбой питания и перезагрузка устройства - это разные возможности), и ожидается, что поток сериализованных данных не будет ни напрямую, ни обратно совместим, ни даже совместим между двумя компиляциями одного и того же исходного кода - все последствия будут отправлены до сервер, когда мы в следующий раз поговорим с ним, и мы не будем обновляться, пока он отключен.
Разумно ли в этом ограниченном контексте для моего средства форматирования обрабатывать эти сгенерированные компилятором классы, как если бы они были сериализуемыми? Единственная альтернатива, которую я вижу, состоит в том, чтобы вручную реализовать те модели паттернов, поддерживаемых компилятором, везде, где сериализуемость является проблемой, с последствиями, варьирующимися от слишком многословного до почти нечитаемого.