Введение в MEF

Post on 12-Jul-2015

825 views 0 download

Transcript of Введение в MEF

Managed Extensibility Framework

Владимир Лисник

Software EngineerM. C. Dean

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

Композиция

Экпорты

Импорты

// Импорт всех доступных расширений:

// Импорт одного расширения:контракт

контракт

тип расширения

тип расширения

точка импорта

точка импорта

// Экспорт расширения:

контракт

экспортируемая часть

тип расширения

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

// Экспорт:

// Импорт:

// MetadataExportAttribute:

// Пользовательские атрибуты :

1.

2.

3.

наш атрибут (метаданные и экспорт)

тип метаданных(все свойства должны

быть read-only)

// Точка импорта:

// Работа с метаданными:

по умолчанию = false

Могут производить рекомпозицию:

• AggregateCatalog (автоматически)

• DirectoryCatalog (вызвать Refresh)

• DeploymentCatalog (автоматически)

.NE

T F

ram

ewo

rk • Как отдельная библиотека в .NET 3.5

• Поставляется в составе .NET 4.0

• Доступен в .NET Framework 4 Client Profile

Silv

erlig

ht • Как отдельная

библиотека в Silverlight 3

• Поставляется в составе Silverlight 4

Silv

erlig

ht

forW

ind

ow

s P

ho

ne • Не доступно

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/