我有主项目和一系列 dll,这些 dll 具有某些接口(interface)的特定实现以及 view\viewmodels 等。我使用 {ImportMany] 将它们全部与一些元数据一起获取,这使我可以选择一个,这让我引用了ISystem的具体实现。
我想从 ISystem 选择的任何 dll 中获得 IDisplay 的唯一特定实现,我用 [Export("SomeDisplay", typeof(IDisplay))] 标记了它 到目前为止,我能找到的唯一看起来可行的东西是 GetExports(ImportDefinition),但我不明白如何创建一个可行的 ImportDefinition,因为它似乎需要一个特定的契约(Contract)名称,但它不是直到运行时才知道。
当然,因为我仍然是 MEF n00b,所以我敢打赌我做错了 :D 那么,如果 GetExports 是最好的方法,我怎样才能让它发挥作用呢?或者我应该使用更好的方法吗?
谢谢!
最佳答案
您需要考虑在 MEF 导出的同时提供元数据。
有关详细信息,请参阅这些文章和博客文章:
关于c# - 如何使用 MEF 的 GetExport\ImportDefinition?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3896515/