Слайд 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/