c# - 创建导入的 MEF 部件的多个实例

标签 c# .net mef

目前我的 WPF 应用程序导入这样的部分

[Import(typeof(ILedPanel)]
public ILedPanel Panel { get; set; }

但这为 ma 提供了实现 ILedPanel 的类的单个实例。 我真正想做的是能够创建尽可能多的实例 我需要的。请注意,ILedPanel 仅包含一个导出 随时使用该软件。

(如果我使用带有 List 的导入,它会给我一个实例 对于每个实现 ILedPanel 的类)

有什么建议吗?

最佳答案

所有其他答案都很老,所以他们没有提到 MEF 中一个相对较新的功能,称为 ExportFactory .这个通用类允许您导入 ExportFactory<ILedPanel>并在需要时创建任意数量的实例,因此您的代码将如下所示:

[Import(typeof(ILedPanel)]
public ExportFactory<ILedPanel> PanelFactory { get; set; }

public ILedPanel CreateNewLedPanelInstance()
{
    return PanelFactory.CreateExport().Value;
}

此方法还满足创建部件具有的任何导入。您可以阅读有关使用 ExportFactory 的更多信息类 here .

关于c# - 创建导入的 MEF 部件的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/947807/

相关文章:

c# - 不活动后出现故障的 WCF 双工回调 - 使长时间运行的推送通知保持事件状态

c# - 为什么 TcpClient 与构造函数中的参数连接速度较慢?

silverlight - 从外部xap加载并且MEF填充程序集时,如何获得ResourceDictionary样式?

c# - Load、Update and Save,还是直​​接执行Insert/Update sql命令?

c# - 使用 COM 将字符串从 C# 传递到 cpp

c# - 如何使用 C# 任务并行库和 IProducerConsumerCollection 实现通用回调?

c# - 如何在C#中使用Nest(Elasticsearch)获取一个索引的所有类型

c# - 用于 C# 代码的 Pascal 大小写或 Camel 大小写?

c# - MEF 2,带有实现类的通用导入

enterprise-library - MEF、EntLib 和 Prism 之间的区别