1 / 12

Использование MEF для разработки Silverlight приложений. Миграция на Prism 4 MEF edition

Максим Павловский twitter: @ paulousky www.maxpaulousky.com. Использование MEF для разработки Silverlight приложений. Миграция на Prism 4 MEF edition. Отличия MEF от MEF for Silverlight. Введён класс CompositionInitializer

wells
Download Presentation

Использование MEF для разработки Silverlight приложений. Миграция на Prism 4 MEF edition

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Максим Павловский twitter: @paulousky www.maxpaulousky.com Использование MEF для разработки Silverlight приложений. Миграция на Prism 4 MEF edition

  2. Отличия MEF от MEF for Silverlight • Введён класс CompositionInitializer • Позволяет инициализировать объекты в любом месте программы, используя глобальный контейнер; • Класс DeploymentCatalog • Реализует поддержку отложенной загрузки *.xap файлов и рекомпозиции сущностей; • Класс CompositionHost • Принимает на вход каталоги, которые содержат сборки для создания композиции; • Класс ExportFactory<T> • Используется для многократного создания экземпляров экспортируемых сущностей;

  3. Динамическая загрузка XAP файлов • private void ComposeContainer(){ • _aс = new AggregateCatalog(); • CompositionHost.Initialize(_aс); • CompositionInitializer.SatisfyImports(this); • } • private void LoadXapFile(string url){ • DeploymentCatalog catalog = new DeploymentCatalog(url); • catalog.DownloadAsync(); • _ac.Catalogs.Add(catalog); • }

  4. Динамическая загрузка XAP файлов Демонстрация

  5. Нововведения Prism 4 • Подержка .Net 4 и Siverlight 4; • Поддержка Mefконтейнера; • Поддержка Windows Phone 7; • Динамическая загрузка xapфайлов

  6. Алгоритм миграции на Prism 4 Mef edition • Изменения в ссылках внешние сборки: • + System.ComponentModel.Composition; • + Microsoft.Practices.Prism; • + Microsoft.Practices.Prism.MefExtensions; • - Microsoft.Practices.Unity; • - Microsoft.Practices.Composite; • - Microsoft.Practices.Composite.Presentation; • - Microsoft.Practices.Composite.UnityExtensions;

  7. Алгоритм миграции на Prism 4 Mef edition • Изменяем namespace c Microsoft.Practices.Composite… на Microsoft.Practices.Prism… ; • Убраем IUnityContainerиз конструкторов и добавляем атрибут [ImportingConstructor]; • Добавляем использование атрибута [Export(typeof(<Type>))]; • Существующие ViewModelнаследуем от NotificationObject для упрощения работы с INotifyPropertyChanged;

  8. Алгоритм миграции на Prism 4 Mef edition • Для каждого модуля добавляем атрибут [ModuleExport(typeof(<ModuleType>))]; • Изменяем вызов RaisePropertyChanged на RaisePropertyChanged(() => <FieldName>); • Переписываем Bootstrapper: • Перенаследуем от MefBootstrapper; • Добавляем переопределённый метод ConfigureAggregateCatalog(), где регистрируем изначально доступные сборки; • Инициализация модулей через каталог не меняется; • Переопределяем метод InitializeShell(): Application.Current.RootVisual = (ShellView)this.Shell;

  9. Алгоритм миграции на Prism 4 Mef edition • Следует избегать добавления Prism сборок в каждый *.XAP файл. Им следует выставить CopyLocal = False; • Можно воспользоваться add-on к Visual Studio XapsMinifier • В ModuleCatalog следует использовать полное квалифицированное имя сборки: “<ModuleNamespace>, <ModuleAssembly>, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”

  10. Играция на Prism 4 Mef edition Демонстрация

  11. Полезные ссылки • Prism http://compositewpf.codeplex.com • Managed Extensibility Framework http://mef.codeplex.com • VS2010 add-on XapsMinifierhttp://bit.ly/XapsMin;

  12. Спасибо! Ваши отзывы будут очень полезны

More Related