我在 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 全部阅读它们才能获得一个具有正确元数据的插件?如果是这样,您如何缓存结果?