我正在将DNX项目转换为.net核心。由于依赖关系的变化,我不能再使用System.ComponentModel.Composition,而必须使用.net内核的移植版本System.Composition (我相信它就是MEF2)。
但是,我在MEF2中找不到用于设置单例的CreationPolicy的等效功能。在MEF1中,代码是
[PartCreationPolicy(CreationPolicy.Shared)]你如何在MEF2中做到这一点?
发布于 2017-08-30 01:50:32
回答自己,因为没有收到答案,虽然没有一个很好的答案。
阅读多篇文章时,看起来默认的CreationPolicy是共享的,也就是单例。因此,可能只需删除此行就可以了。
MEF2引入了导出工厂,可以查看该工厂以获取有关策略设置的更多详细信息。
发布于 2018-10-12 23:39:34
解决方案是使用ConventionBuilder类。
假设有一个名为AppShell的类,它实现了接口IAppShell。要将其导出到共享模式,请执行以下步骤:
var conventionBuilder = new ConventionBuilder();
conventionBuilder.ForTypesDerivedFrom<IAppShell>()
.Export<AppShell>()
.Shared();然后:
var config = new ContainerConfiguration()
.WithAssemblies(new[]{ typeof(AppShell).Assembly}, conventionBuilder);https://stackoverflow.com/questions/45928551
复制相似问题