Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用MEF';s GetExport\ImportDefinition?_C#_Mef - Fatal编程技术网

C# 如何使用MEF';s GetExport\ImportDefinition?

C# 如何使用MEF';s GetExport\ImportDefinition?,c#,mef,C#,Mef,我有一个主项目和一系列dll,它们有一些接口以及view\viewmodels等的具体实现。我使用{ImportMany]来获取所有这些接口和一些元数据,这允许我选择一个,这给了我ISSystem具体实现的参考 我想从ISystem所选择的dll中获得IDisplay的唯一具体实现,我用[Export(“SomeDisplay”,typeof(IDisplay))]标记了它 到目前为止,我能找到的唯一一件看起来可能有效的事情是GetExports(ImportDefinition),但我不知道如

我有一个主项目和一系列dll,它们有一些接口以及view\viewmodels等的具体实现。我使用{ImportMany]来获取所有这些接口和一些元数据,这允许我选择一个,这给了我ISSystem具体实现的参考

我想从ISystem所选择的dll中获得IDisplay的唯一具体实现,我用[Export(“SomeDisplay”,typeof(IDisplay))]标记了它 到目前为止,我能找到的唯一一件看起来可能有效的事情是GetExports(ImportDefinition),但我不知道如何创建一个有效的ImportDefinition,因为它似乎需要一个特定的contractname,直到运行时才知道

当然,既然我还是一个MEF n00b,我敢打赌我做错了:D 那么,如果GetExports是最好的方法,我该如何使它工作呢?或者有更好的方法可以使用吗


谢谢!

您需要考虑在MEF导出时提供元数据

有关详细信息,请参阅以下文章和博客帖子:


我在ISystem导出中使用元数据来提供一些描述性文本,以便用户可以选择加载哪个文本。我将尝试一下。在什么情况下,我希望使用GetExports?