Что такое 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. В этом случае вы можете создавать отдельные каталоги, а затем составной каталог, который объединяет эти два. Теперь вы используете этот объединенный словарь в своем коде для запроса импорта/экспорта.