В течение последних нескольких месяцев я разрабатывал приложение с управляемой инфраструктурой расширяемости, используя предварительный просмотр сообщества. Я использовал метод GetExportedValues () и PartCreationPolicy (CreationPolicy.NonShared) для фальсификации фабрики классов (поскольку фабрика поддерживается только в версии Silverlight). Это работало отлично, пока я не обновил проект для использования .net 4.0. Там нет ошибки, это просто не работает.
Так почему этот код перестал работать? Код следует:
Заводской метод:
public static IEnumerable<DataActionBase> GetActionsFromDirectory(string PluginsFolder)
{
IEnumerable<DataActionBase> result = null;
var catalog = new DirectoryCatalog(PluginsFolder);
var container = new CompositionContainer(catalog: catalog);
result = container.GetExportedValues<DataActionBase>();
return result;
}
Пример класса экспорта:
[Export(typeof(DataActionBase))]
[PartCreationPolicy(CreationPolicy.NonShared)]
public class AnAction : DataActionBase
{
....
}