c#-使用MEF Preview 5导入具有特定元数据的零件
我在MEF预览5中定义了如下导出

[ExportMetadata("Application", "CheckFolderApplication")]
[Export(typeof(ExtendedArtifactBase))]
public class CheckFolderArtifact2 : ExtendedArtifactBase
{ ...

然后,我只想要带有“应用程序”“ 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读取它们才能获得具有正确元数据的插件?如果是这样,您如何缓存结果?

最佳答案
是的,在这种情况下,您将必须自己进行过滤.

要缓存结果,您可以将其存储在另一个私有变量中.如果要支持重组(必须将import属性的AllowRecomposition属性设置为true),则可以在您的类上实现IPartImportsSatisfiedNotification,并且只要设置了导入,就将调用接口的OnImportsSatisfied方法.

点击查看更多相关文章

转载注明原文:c#-使用MEF Preview 5导入具有特定元数据的零件 - 乐贴网