【问题标题】:Handling Types Defined in Plug-ins That Are No Longer Available处理插件中定义的不再可用的类型
【发布时间】:2011-05-06 04:17:39
【问题描述】:

我正在开发一个允许用户维护和保存“项目”的 .NET 框架应用程序。一个项目可以由其类型在框架本身的程序集中和/或第三方程序集中定义的组件组成,这些组件将通过尚未构建的插件架构提供给框架。保存项目时,只需将其二进制序列化为文件。

项目是可移植的,因此多个用户可以将同一个项目加载到他们自己的框架实例中(就像不同的用户可以在他们自己的 MSWord 本地副本中打开同一个 MSWord 文档一样)。此外,一个用户的框架可用的插件可能对另一个用户的框架不可用。

我需要某种方法来确保当用户尝试打开(即反序列化)包含无法找到定义程序集的类型的项目时(由于框架版本不兼容或缺少插件),该项目仍然打开,但有问题的类型以某种方式被替换或省略。麻烦的是,迄今为止我所做的研究甚至没有暗示一种合适的方法。任何想法将不胜感激,谢谢。

【问题讨论】:

    标签: .net plugins frameworks assembly-resolution


    【解决方案1】:

    您需要使用反射制作自己的序列化程序。

    【讨论】:

    • 是的,我想知道这一点,但并不想去那里。也就是说,我还需要减少项目的序列化足迹——定制序列化程序的另一个原因。感谢您的回复。
    【解决方案2】:

    这个问题在很大程度上取决于您的架构。接口和依赖注入用于实现您描述的“可插拔”架构,但只有您可以确定如何从不可用的类型定义中“恢复”。您的设计需要考虑到项目的任何组件都可能无法加载的事实。

    【讨论】:

      猜你喜欢
      • 2017-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      相关资源
      最近更新 更多