我正在开发一个.NET框架应用程序,允许用户维护和保存“项目”。项目可以包含其类型在框架本身的程序集中定义的组件和/或第三方程序集中的组件,这些组件将通过尚未构建的插件体系结构提供给框架。保存项目时,它只是二进制序列化为文件。
项目是可移植的,因此多个用户可以将同一个项目加载到他们自己的框架实例中(就像不同的用户可以在他们自己的MSWord本地副本中打开相同的MSWord文档一样)。更重要的是,一个用户框架可用的插件可能无法用于另一个用户框架。
我需要一些方法来确保当用户试图打开(即反序列化)包含无法找到定义程序集的类型的项目时(由于框架版本不兼容或没有插件),该项目仍然打开,但违规类型以某种方式被替换或省略。麻烦的是,我迄今为止所做的研究甚至没有暗示适当的方法。非常感谢任何想法,谢谢。
答案 0 :(得分:0)
您需要使用反射创建自己的序列化程序。
答案 1 :(得分:0)
此问题在很大程度上取决于您的架构。接口和依赖注入用于实现您描述的“可插入”体系结构,但只有您可以确定如何从不可用的类型定义中“恢复”。您的设计需要考虑到项目的任何组件可能无法加载的事实。