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