Что такое AggregateCatalog? - PullRequest
       24

Что такое AggregateCatalog?

18 голосов
/ 22 ноября 2010

Что такое AggregateCatalog? Что это значит, когда вы создаете new AggregateCatalog()? Что это значит, когда вы добавляете сборки в каталог, например catalog.Catalogs.Add(new AssemblyCatalog(someAssembly))? Кроме сборок, что вы можете добавить в каталог? любые общие знания, связанные с этим, тоже были бы полезны (я абсолютный нуб)

Ответы [ 2 ]

18 голосов
/ 22 ноября 2010

AggregateCatalog в MEF в основном позволяет собирать несколько каталогов расширений. Когда вы вызываете new AggregateCatalog(), вы в основном создаете экземпляр новой коллекции каталога (необязательно заполненной), которая может содержать несколько экземпляров ComposablePartCatalog, который может содержать несколько частей.

Считайте, что это класс, который поможет вам собрать детали из нескольких наборов.

Сборки - это просто способ подтолкнуть детали к вызывающему приложению. Вы можете передавать детали непосредственно из существующей сборки.

Для получения дополнительной информации о каталогах, я бы порекомендовал прочитать this .

4 голосов
/ 22 ноября 2010

Mef имеет небольшую кривую обучения - изучите документы на mef.codeplex.com по крайней мере один раз. Или попробуйте скринкасты, если вам не хватает времени.

Идея состоит в том, что каталог - это словарь экспортированных деталей (объектов, которые нужно вставить) или деталей, которые нуждаются в импорте (которые нуждаются в объектах, введенных в систему). Каталог можно заполнить несколькими способами (следовательно, Каталог diff производные ) - из справочника (все asm в директории) или конкретной сборки.

Далее вы можете создать сводный каталог, например, Вы хотите создать один словарь, который содержит все экспортированные объекты из DirA и из этой конкретной сборки, лежащие в DirB. В этом случае вы можете создать отдельные каталоги, а затем составной каталог, который объединяет их. Теперь вы используете этот объединенный словарь в своем коде для запроса импорта / экспорта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...