MEF用于大量插件的应用

3
我目前正在开发一个基于C#的应用程序,它加载了许多不同的模块(硬件组件的.net驱动程序等)。该应用程序应该提供某种插件/添加管理器来选择专用模块(仅限于一组专用设备、过滤器、组件)。鉴于微软提供了一个成熟的MEF框架,我认为尝试使用它是个好主意。
当前我面临的主要问题是,通过DirectoryCatalog扫描附加组件的文件夹后,所有程序集都被加载到进程中(因为我使用“lazy”机制,当前没有任何实例化)。
尽管如此,当用户稍后决定仅挑选其中几个时,我想避免将所有程序集加载到进程中。
所以我尝试找到一种方法,在不保留程序集在进程中的情况下获取插件元数据。我发现Mono.Addins框架似乎支持这样的XML基于清单的方案 - 但我不确定是否可以使用MEF做到类似的事情?

如果您不想保留程序集的加载,可以考虑启动另一个进程(甚至是使用不同参数的相同应用程序)来扫描程序集,并通过进程间通信进行报告。我对Mono Addins不熟悉,因此无法对您问题的这个方面发表评论。 - RogerN
你可以这么做,但是你需要编写自己的目录类型。 - jmoffatt
1个回答

0

我专门为这个目的编写了LazyAssemblyCatalog。 它允许您在懒加载插件程序集的同时仍然可以访问它们的元数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接