gpt4 book ai didi

C# MEF 与静态类的用法

转载 作者:可可西里 更新时间:2023-11-01 08:37:49 27 4
gpt4 key购买 nike

我的解决方案中有一个静态类,用于处理各种程序集。我想通过 MEF 链接它们,所以我在类中创建了一个字段。

[Import(typeof(A))]
static private A _a1;

然后我有一个方法,我将程序集名称作为参数传递给该方法:

    public static A LoadPackage(string filePath)
{
var catalog = new AggregateCatalog();
catalog.Catalogs.Add(new AssemblyCatalog(filePath));
var _container = new CompositionContainer(catalog);
???
}

那么现在有没有办法从文件路径指定的程序集中导入类型?

我做不到:

_container.ComposeParts(this);

因为类是静态的,我也不能这样做

_container.ComposeParts(_a1);

(一开始可能是完全错误的)因为 A 没有任何构造函数(因此 _a1 为 null)

最佳答案

MEF 旨在为您创建和初始化对象。它不处理静态类中的状态。

我建议您将类及其字段设置为非静态的,如果您想强制执行单例行为,则用 [PartCreationPolicy(CreationPolicy.Shared)] 标记它。

另见 this other question关于 MEF 和单例模式。

关于C# MEF 与静态类的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8786214/

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