beginning mef by Владимир Лисник
DESCRIPTION
Введение в MEFTRANSCRIPT
MEF
Введение вManaged Extensibility Framework
Владимир Лисник
Software EngineerM. C. Dean
Что такое MEF?
Инструмент позволяющий решать задачи плагинообразности
приложения
Функциональные части
Композиция
Экпорты
Импорт
ы
Импорт
// Импорт всех доступных расширений:
// Импорт одного расширения:контракт
контракт
тип расширения
тип расширения
точка импорта
точка импорта
Экспорт
// Экспорт расширения:
контракт
экспортируемая часть
тип расширения
Композиция
CompositionPart
CompositionPart
// Явная передача элементов композиции:
Композиция
каталог
объект с точками импорта
// Ипользование каталога для композиции:
Каталоги
AggregateCatalog AssemblyCatalog DirectoryCatalog * TypeCatalog DeploymentCatalog **
* Только в .NET Framework** Только в Silverlight
Обзор архитектуры
// Ключевая концепция:
Обзор архитектуры
(с) http://mef.codeplex.com/wikipage?title=Architecture&referringTitle=Documentation
Где обитает?
System.ComponentModel.Composition.dllSystem.ComponentModel.Composition.Initialization.dll*
* Только в Silverlight
PartCreationPolicyAttribute
// Экспорт:
// Импорт:
Метаданные экспортов
// MetadataExportAttribute:
// Пользовательские атрибуты :
1.
2.
3.
наш атрибут (метаданные и
экспорт)
тип метаданных(все свойства
должны быть read-only)
Доступ к метаданным
Lazy<T, TMetadata>
// Точка импорта:
// Работа с метаданными:
Рекомпозиция
по умолчанию = false
Могут производить
рекомпозицию:
• AggregateCatalog (автоматически)
• DirectoryCatalog (вызвать Refresh)
• DeploymentCatalog (автоматически)
Доступность
.NET Fra
mework
•Как отдельная библиотека в .NET 3.5•Поставляется в составе .NET 4.0•Доступен в .NET Framework 4 Client Profile
Silverlig
ht
•Как отдельная библиотека в Silverlight 3•Поставляется в составе Silverlight 4
Silverlight for Window
s Phone
•Не доступно
Лицензия
MS Public License
(Проект с открытым исходным кодом)
Ресурсы
http://mef.codeplex.com/ http://blogs.msdn.com/b/gblock/archive/tags/mef/ http://blogs.msdn.com/b/nblumhardt/archive/tags
/mef/
Спасибо!