我已经为 Compact Framework 实现了一个流行层(包括一个类似BinaryFormatter
的序列化程序)。我希望能够序列化编译器生成的类,这些类在适当的情况下由 lambda 和迭代器等产生,以便(例如)一个 lambda 及其封闭变量(即显示类实例)被添加到可序列化对象上的事件中,并且所有封闭变量都是可序列化的,那么生成的对象图仍然是完全可序列化的。
如果这些类的实例只能通过与它们序列化的二进制文件完全相同的构建来反序列化,这是可以接受的——流行层主要是为了在应用程序意外终止时提供持久性(电源故障和设备重启是不同的可能性) , 并且序列化的数据流不应该是向前或向后兼容的,或者甚至在同一源代码的两个编译中兼容——无论如何,当我们下一次与之交谈时,所有重要的东西都将被发送到服务器,并且我们不会在断开连接时更新。
在这种有限的上下文中,我的格式化程序将这些编译器生成的类视为可序列化的类是否合理?我看到的唯一替代方法是在需要关注可序列化性的任何地方手动实现编译器支持的模式,其后果从过于冗长到几乎不可读。