我正在使用DirectoryCatalog()
和[ImportMany]
从多个程序集导入多个相同类型的插件。所有可用插件的列表将呈现给用户以供选择。如何确保MEF插件的唯一名称
导出程序集将由第三方开发,因此必须保证导入的插件的名称是唯一的。
除了将文件名附加到插件全名(例如fileName.assemblyName.pluginName
)之外,我无法看到这样做的方法,但是我无法在任何地方找到特定程序集的文件名。如果文件名改变,目录中引用文件名的所有字段似乎都不会改变(我已通过复制plugin.dll
并将其命名为plugin_2.dll
,目录报告为plugin.dll
作为所有导入的文件名进行了测试,在Assemblies[n]
,CodeBase
和其他字段)我能找到文件的实际名称的唯一地方是在Assemblies.LoadedFiles[]
,但我不知道如何将哪个插件关联到哪个加载的文件。
如果有一种获取文件名的方法,或者如果有另一种方法来保证唯一的插件名称,请让我知道。
导入插件并获取程序集位置。您可以将每个MEF零件放置在其自己的文件夹中,那么你不必考虑文件名冲突。 –