如何在.net-core system.com post(MEF)中设置CreationPolicy Singleton



我正在将DNX项目转换为.NET Core。由于依赖性的变化,我不能再使用System.ComponentModel.Composition,而必须使用.NET Core的端口版本System.Composition(我认为这是MEF 2)。

但是,我找不到MEF2中的等效功能,用于为Singleton设置CreationPolicy。在MEF1中,代码为

[PartCreationPolicy(CreationPolicy.Shared)]

如何在MEF2中执行此操作?

自己回答自己,因为没有收到的答案,尽管没有一个很好的答案。

阅读多个帖子,似乎共享了默认的CreationPolicy,也就是Singleton。因此,可能只是删除这一行会起作用。

MEF2引入了出口工厂,可以查看以获取有关策略设置的更多详细信息。

解决方案是使用convention -builder类。

假设有一个称为AppShell的类,它实现了接口IAppShell。为了以共享模式导出它,请按照下一步:

var conventionBuilder = new ConventionBuilder();
conventionBuilder.ForTypesDerivedFrom<IAppShell>()
    .Export<AppShell>()
    .Shared();

然后:

var config = new ContainerConfiguration()
    .WithAssemblies(new[]{ typeof(AppShell).Assembly}, conventionBuilder);

相关内容

  • 没有找到相关文章

最新更新