C# 如何避免MEF中的冗余导入?

C# 如何避免MEF中的冗余导入?,c#,.net,mef,redundancy,C#,.net,Mef,Redundancy,问题是。。。如果我使用MEF中的目录目录目录,并拥有some.dll和some.dll的副本,我将获得双倍的导出,即使它们定义的是相同的类型,有办法解决这个问题吗 编辑:问题不在于这个特定的问题,这只是一个真实问题的抽象示例,例如,如果我有一个“扩展”文件夹,并且有一种手动导入的方法。。。这是一件很好处理的事情 有办法解决这个问题吗 我想到两个选择: 删除文件的冗余副本 装配 不要使用目录目录。你 可以为每个部件添加部件目录 单独组装,然后离开 清除不需要的组件 有办法解决这个问题吗 我想到

问题是。。。如果我使用MEF中的目录目录目录,并拥有some.dll和some.dll的副本,我将获得双倍的导出,即使它们定义的是相同的类型,有办法解决这个问题吗

编辑:问题不在于这个特定的问题,这只是一个真实问题的抽象示例,例如,如果我有一个“扩展”文件夹,并且有一种手动导入的方法。。。这是一件很好处理的事情

有办法解决这个问题吗

我想到两个选择:

  • 删除文件的冗余副本 装配
  • 不要使用目录目录。你 可以为每个部件添加部件目录 单独组装,然后离开 清除不需要的组件
有办法解决这个问题吗

我想到两个选择:

  • 删除文件的冗余副本 装配
  • 不要使用目录目录。你 可以为每个部件添加部件目录 单独组装,然后离开 清除不需要的组件

您可以使用
FilteredCatalog
(不是核心MEF发行版的一部分)执行此操作。请参见以下示例:

您可以使用
Distinct
,而不是通过
Where
从内部目录中进行选择。要比较
ComposablePartDefinition
s是否相等,最简单的选项是使用
ToString
,但强制转换到
ReflectionComposablePartDefinition
也是一个选项

嗯,,
Nick

您可以使用
FilteredCatalog
(不是核心MEF发行版的一部分)执行此操作。请参见以下示例:

您可以使用
Distinct
,而不是通过
Where
从内部目录中进行选择。要比较
ComposablePartDefinition
s是否相等,最简单的选项是使用
ToString
,但强制转换到
ReflectionComposablePartDefinition
也是一个选项

嗯,, 尼克