Помогите начать с MEF - PullRequest
13 голосов
/ 24 мая 2010

Я где-то читал, что с MEF я могу просто поместить DLL в каталог, и мое приложение (с некоторой магией MEF) сможет прочитать его и выполнить код в нем?Надеюсь, только классы, которые реализуют интерфейс, который я определяю ??

Может кто-нибудь помочь мне начать работу, с некоторыми ссылками, возможно, для моей проблемы.но ничто не похоже на то, что я ищу, и это сложно, когда я не знаю точно, что искать ...

Thx S

Ответы [ 5 ]

6 голосов
/ 24 мая 2010

Вот два сообщения MEF "Getting Started" Брэда Абрамса:

Обратите внимание, что они были написаны с использованием предварительных версий MEF, поэтому произошли некоторые изменения.Например, AttributedAssemblyCatalog был переименован в AssemblyCatalog, AggregatingComposablePartCatalog теперь является AggregatingCatalog, а PackageCatalog для Silverlight теперь называется DeploymentCatalog и имеет некоторые другие изменения API.

3 голосов
/ 25 мая 2010
2 голосов
/ 27 мая 2010

Вы можете поддержать «Перекомпоновку», отметив импорт следующим образом:

[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);
1 голос
/ 27 ноября 2012

Эта статья предоставляет простой общий подход к работе с MEF:

  1. Самый простой способ (в общем) использовать MEF.
  2. Как использовать MEF полностью ленивым и для процесса загрузки Dll.
1 голос
/ 28 мая 2010

Вот демонстрационное приложение , созданное с WPF, MVVM и MEF (как для композиции, так и для расширяемости).

...