Начало работы с MEF
Я где-то читал, что с помощью MEF я могу просто удалить dll в каталог, и мое приложение (с некоторой магией MEF) сможет прочитать его и выполнить код в нем?
Надеюсь, только классы, которые реализуют интерфейс, который я определяю
Может кто-нибудь помочь мне разобраться с некоторыми ссылками, возможно, для моей проблемы.
Я просмотрел некоторые документы, но ничто не похоже на то, что мне нужно, и его сложность, когда я точно не знаю, что искать...
спасибо
S
Ответы
Ответ 1
Вот два сообщения MEF "Начало работы" от Брэда Абрамса:
Обратите внимание, что они были написаны с использованием предварительных версий MEF, поэтому произошли некоторые изменения. Например, AttributedAssemblyCatalog был переименован в AssemblyCatalog, AggregatingComposablePartCatalog теперь представляет собой AggregatingCatalog, а PackageCatalog на Silverlight теперь является DeploymentCatalog и имеет некоторые другие изменения API.
Ответ 2
Попробуйте прочитать введение Glenn Block в MEF в журнале MSDN:
Управляемая расширяемость: создание составных приложений в .NET 4 с помощью управляемой расширяемости Framework
Ответ 3
Вы можете поддерживать "Рекомпозицию", отмечая импорт следующим образом:
[ImportMany(AllowRecomposition=true)]
public IMessageSender[] Senders { get; set; }
Однако из того, что я могу сказать, это не автоматически загружает сборки. Версия MEF, которая сделала это для .NET 4 (и я предполагаю, что Preview 9 в комплексе), кажется, не загружает сборки автоматически. Я не уверен, изменилось ли это поведение по мере того, как был разработан MEF.
Вам нужно будет добавить FileSystemWatcher и вызвать Refresh(), например, DirectoryCatalog и прослушать одно или несколько следующих событий:
catalog.Changed += new EventHandler<ComposablePartCatalogChangeEventArgs>(Catalog_Changed);
container.ExportsChanged += new EventHandler<ExportsChangeEventArgs>(Container_ExportsChanged);
directoryCat.Changed += new EventHandler<ComposablePartCatalogChangeEventArgs>(dCat_Changed);
Ответ 4
Вот демонстрационное приложение построенное с использованием WPF, MVVM и MEF (для состава и расширяемости).
Ответ 5
Эта статья обеспечивает простой общий подход к работе с MEF:
- Самый простой способ (в общем случае) использовать MEF.
- Как использовать MEF полностью ленив также для процесса загрузки Dll.