使用MEF从X个文件夹导入部件

时间:2009-05-25 05:12:31

标签: c# asp.net-mvc mef

我有许多文件夹都包含应导入的MEF部分。查找所有部件以迭代文件夹并创建MEF聚合目录对象的最简单方法是什么?

我需要根据从中读取的文件夹将部件放在应用程序的不同位置。因此,文件夹“Test1Parts”中的部分应位于应用程序的“Test1”部分下。我是否以某种方式提供了文件夹名称,或者通过聚合目录导入后它们看起来是否相同?

我有通用部件,所以我不能真正在每个部件上放置一个重新编译的属性,只是为了让它们显示在应用程序的不同部分。

另一种方式(如果它不能通过文件夹结构控制)当然是使用我在导入之前读取的配置文件,告诉哪些部分应该去哪里。

最好的方法是什么?

2 个答案:

答案 0 :(得分:1)

我不是100%清楚你要做什么,但我建议你为你的应用程序的每个“部分”使用一个聚合目录。然后,您将根据该部分的零件目录对每个部分执行Compose。每个目录只包含相关目录中的部分(您也可以将一些公共目录加载到两个目录中)。这有什么意义吗?

答案 1 :(得分:1)

我认为最好的方法是为每个文件夹分别设置一个容器,并为该文件夹中的部件提供相应的DirectoryCatalog。如果有些部分需要是全局的,那么您可以拥有一个包含这些部分的父目录,并为每个目录设置子目录。