我正在将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);