Я читал где-нибудь, что с MEF могу просто бросить dll в каталог, и мое приложение (с некоторым волшебством MEF) сможет считать его и выполнить код в нем? Надо надеяться, только классы, которые реализуют интерфейс, который я определяю??
Может кто-то помогать мне начать с некоторыми ссылками, возможно, для моей проблемы.
Я просмотрел некоторые документы, но ничто, кажется, не то, что я после и его хитрое, когда я не знаю точно, что искать на...
Спасибо S
Вот два сообщения MEF «Приступая к работе» Брэда Абрамса:
Обратите внимание, что они были написаны с использованием предварительных версий MEF, поэтому произошли некоторые изменения. Например, AttributedAssemblyCatalog был переименован в AssemblyCatalog, AggregatingComposablePartCatalog теперь AggregatingCatalog, а PackageCatalog в Silverlight теперь называется DeploymentCatalog, и в него были внесены некоторые другие изменения API.
Попробуйте прочитать введение Глена Блока в MEF в MSDN Magazine:
Вот созданное демонстрационное приложение с WPF, MVVM и MEF (как для композиции, так и для расширяемости).
Вы можете поддержать 'Recomposition', пометив импорт следующим образом:
[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);