У меня экспорт определен следующим образом в MEF preview 5
[ExportMetadata("Application", "CheckFolderApplication")]
[Export(typeof(ExtendedArtifactBase))]
public class CheckFolderArtifact2 : ExtendedArtifactBase
{ ...
Тогда я только хочу импортировать эти данные с метаданными "Приложение" "CheckFolderApplication". Чтобы сделать это сейчас, я прочитал all import и затем отфильтровал результат.
[Import(typeof(ExtendedApplicationBase))]
private ExportCollection<IApplication> _applications { get; set; }
public IApplication GetApplication(string applicationName)
{
return _applications.Single(a => a.GetExportedObject().Name == applicationName).GetExportedObject();
}
Это кажется действительно неэффективным. Что делать, если у меня есть тысячи плагинов - нужно ли мне читать их все через MEF, чтобы получить только один с нужными метаданными? Если да, то как вы кешируете результат?