View
58
Download
1
Category
Preview:
DESCRIPTION
Максим Павловский twitter: @ paulousky www.maxpaulousky.com. Использование MEF для разработки Silverlight приложений. Миграция на Prism 4 MEF edition. Отличия MEF от MEF for Silverlight. Введён класс CompositionInitializer - PowerPoint PPT Presentation
Citation preview
Использование MEF для разработки Silverlight приложений. Миграция на Prism 4 MEF edition
Максим Павловский
twitter: @paulouskywww.maxpaulousky.com
Отличия MEF от MEF for Silverlight
Введён класс CompositionInitializerПозволяет инициализировать объекты в любом месте программы, используя глобальный контейнер;
Класс DeploymentCatalogРеализует поддержку отложенной загрузки *.xap файлов и рекомпозиции сущностей;
Класс CompositionHostПринимает на вход каталоги, которые содержат сборки для создания композиции;
Класс ExportFactory<T>Используется для многократного создания экземпляров экспортируемых сущностей;
Динамическая загрузка 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);}
Динамическая загрузка XAP файлов
Демонстрация
Нововведения Prism 4
Подержка .Net 4 и Siverlight 4;Поддержка Mef контейнера;Поддержка Windows Phone 7;
Динамическая загрузка xap файлов
Алгоритм миграции на 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;
Алгоритм миграции на Prism 4 Mef edition
Изменяем namespace c Microsoft.Practices.Composite… на Microsoft.Practices.Prism… ;Убраем IUnityContainer из конструкторов и добавляем атрибут [ImportingConstructor];Добавляем использование атрибута [Export(typeof(<Type>))];Существующие ViewModel наследуем от NotificationObject для упрощения работы с INotifyPropertyChanged;
Алгоритм миграции на Prism 4 Mef edition
Для каждого модуля добавляем атрибут [ModuleExport(typeof(<ModuleType>))];Изменяем вызов RaisePropertyChanged на RaisePropertyChanged(() => <FieldName>);Переписываем Bootstrapper:
Перенаследуем от MefBootstrapper;Добавляем переопределённый метод ConfigureAggregateCatalog(), где регистрируем изначально доступные сборки;Инициализация модулей через каталог не меняется;Переопределяем метод InitializeShell(): Application.Current.RootVisual = (ShellView)this.Shell;
Алгоритм миграции на Prism 4 Mef edition
Следует избегать добавления Prism сборок в каждый *.XAP файл. Им следует выставить CopyLocal = False;
Можно воспользоваться add-on к Visual Studio Xaps Minifier
В ModuleCatalog следует использовать полное квалифицированное имя сборки: “<ModuleNamespace>, <ModuleAssembly>, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”
Играция на Prism 4 Mef edition
Демонстрация
Полезные ссылки
Prism http://compositewpf.codeplex.comManaged Extensibility Framework http://mef.codeplex.comVS2010 add-on Xaps Minifier http://bit.ly/XapsMin;
Спасибо! Ваши отзывы будут очень полезны
Recommended