我正在使用DirectoryCatalog()
和[ImportMany]
從多個程序集導入多個相同類型的插件。所有可用插件的列表將呈現給用戶以供選擇。如何確保MEF插件的唯一名稱
導出程序集將由第三方開發,因此必須保證導入的插件的名稱是唯一的。
除了將文件名附加到插件全名(例如fileName.assemblyName.pluginName
)之外,我無法看到這樣做的方法,但是我無法在任何地方找到特定程序集的文件名。如果文件名改變,目錄中引用文件名的所有字段似乎都不會改變(我已通過複製plugin.dll
並將其命名爲plugin_2.dll
,目錄報告爲plugin.dll
作爲所有導入的文件名進行了測試,在Assemblies[n]
,CodeBase
和其他字段)我能找到文件的實際名稱的唯一地方是在Assemblies.LoadedFiles[]
,但我不知道如何將哪個插件關聯到哪個加載的文件。
如果有一種獲取文件名的方法,或者如果有另一種方法來保證唯一的插件名稱,請讓我知道。
導入插件並獲取程序集位置。您可以將每個MEF零件放置在其自己的文件夾中,那麼你不必考慮文件名衝突。 –