Как я могу избежать избыточного импорта в MEF? - PullRequest
1 голос
/ 15 августа 2010

Вот в чем проблема ... если я использую, скажем, каталог каталога в MEF и у меня есть some.dll и копия some.dll, я получу двойной экспорт, даже если они определяют один и тот же тип, есть лиспособ решить эту проблему?

РЕДАКТИРОВАТЬ: проблема не в этой конкретной проблеме, это просто абстрактный пример реальной проблемы, например, если у меня есть папка "extensions" и способимпортировать вручную ... это просто что-то, с чем было бы неплохо справиться.

Ответы [ 2 ]

4 голосов
/ 16 августа 2010

Вы можете сделать это с помощью FilteredCatalog (не входит в основной дистрибутив MEF.) См. Пример здесь: http://mef.codeplex.com/wikipage?title=Filtering%20Catalogs

Вместо того, чтобы выбирать из внутренних каталогов через Where, вы можете использовать Distinct. Чтобы сравнить ComposablePartDefinition s на равенство, самый простой вариант - использовать ToString, но приведение к ReflectionComposablePartDefinition также возможно.

НТН, Ник

0 голосов
/ 16 августа 2010

есть ли способ решить эту проблему?

На ум приходят два варианта:

  • удалить избыточную копию сборки
  • не используйте каталог каталога.Вы можете добавить каталоги сборок для каждой отдельной сборки и просто исключить ненужные сборки.
...