Что такое AggregateCatalog?

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

Ответы

Ответ 1

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

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

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

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

Ответ 2

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

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

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