gpt4 book ai didi

c# - 使用 MEF Preview 5 导入具有特定元数据的零件

转载 作者:行者123 更新时间:2023-11-30 16:36:23 25 4
gpt4 key购买 nike

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

最佳答案

是的,在这种情况下,您必须自己进行过滤。

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

关于c# - 使用 MEF Preview 5 导入具有特定元数据的零件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/884083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com