【问题标题】:MEF for huge number of addins用于大量插件的 MEF
【发布时间】:2019-10-14 17:31:39
【问题描述】:

我目前正在开发一个基于 C# 的应用程序,该应用程序加载了许多不同的模块(用于硬件组件的 .net 驱动程序等)。应用程序应提供某种插件/插件管理器来选择专用模块(仅一组专用设备、过滤器、组件)。基于 MS 开箱即用的完善框架 MEF 的事实,我认为尝试一下是个好主意。

我目前面临的主要问题是,在通过DirectoryCatalog 扫描加载项文件夹后,所有程序集都被加载到进程中(目前没有任何实例化,因为我使用“懒惰”机制)。

尽管如此,当用户稍后决定只选择其中的几个时,我想避免在此过程中加载所有程序集。

因此,我尝试找到一种方法来获取加载项元数据,而无需将程序集加载到进程中。我已经看到Mono.Addins 框架似乎支持使用基于 XML 的清单的这种情况 - 但我不确定 MEF 是否可以做类似的事情?

【问题讨论】:

  • 如果您不想保持程序集处于加载状态,请考虑启动另一个进程(甚至是具有不同参数的相同应用程序)来扫描程序集并通过进程间通信进行报告。我不熟悉 Mono Addins,所以我无法评论您问题的这方面。
  • 可以,但需要自己编写目录类型

标签: c# mono add-in mef


【解决方案1】:

我写LazyAssemblyCatalog 就是为了这个目的。 它允许您延迟加载插件程序集,同时仍然可以访问它们的元数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-19
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多