Слайд 2Что такое MEF?
Инструмент позволяющий решать задачи плагинообразности приложения

Слайд 4Импорт
// Импорт всех доступных расширений:
// Импорт одного расширения:
контракт
контракт
тип расширения
тип расширения
точка импорта
точка импорта

Слайд 5Экспорт
// Экспорт расширения:
контракт
экспортируемая часть
тип расширения

Слайд 6Композиция
CompositionPart
CompositionPart
// Явная передача элементов композиции:

Слайд 7Композиция
каталог
объект с точками импорта
// Ипользование каталога для композиции:

Слайд 8Каталоги
AggregateCatalog
AssemblyCatalog
DirectoryCatalog *
TypeCatalog
DeploymentCatalog **
* Только в .NET Framework
** Только в Silverlight

Слайд 9Обзор архитектуры
// Ключевая концепция:

Слайд 10Обзор архитектуры
(с) http://mef.codeplex.com/wikipage?title=Architecture&referringTitle=Documentation

Слайд 11Где обитает?
System.ComponentModel.Composition.dll
System.ComponentModel.Composition.Initialization.dll*
* Только в Silverlight

Слайд 12PartCreationPolicyAttribute
// Экспорт:
// Импорт:

Слайд 13Метаданные экспортов
// MetadataExportAttribute:
// Пользовательские атрибуты :
1.
2.
3.
наш атрибут
(метаданные и экспорт)
тип метаданных
(все свойства

должны быть read-only)
Слайд 14Доступ к метаданным
Lazy
// Точка импорта:
// Работа с метаданными:

Слайд 15Рекомпозиция
по умолчанию = false
Могут производить рекомпозицию:
AggregateCatalog (автоматически)
DirectoryCatalog (вызвать Refresh)
DeploymentCatalog

(автоматически)
Слайд 16Доступность
.NET Framework
Как отдельная библиотека в .NET 3.5
Поставляется в составе .NET 4.0
Доступен в

.NET Framework 4 Client Profile
Silverlight
Как отдельная библиотека в Silverlight 3
Поставляется в составе Silverlight 4
Silverlight for Windows Phone
Не доступно
Слайд 17Лицензия
MS Public License
(Проект с открытым исходным кодом)

Слайд 18Ресурсы
http://mef.codeplex.com/
http://blogs.msdn.com/b/gblock/archive/tags/mef/
http://blogs.msdn.com/b/nblumhardt/archive/tags/mef/
