首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在.Net核心System.Composition (Mef)中设置CreationPolicy单例

如何在.Net核心System.Composition (Mef)中设置CreationPolicy单例
EN

Stack Overflow用户
提问于 2017-08-29 07:15:38
回答 2查看 439关注 0票数 3

我正在将DNX项目转换为.net核心。由于依赖关系的变化,我不能再使用System.ComponentModel.Composition,而必须使用.net内核的移植版本System.Composition (我相信它就是MEF2)。

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

代码语言:javascript
复制
[PartCreationPolicy(CreationPolicy.Shared)]

你如何在MEF2中做到这一点?

EN

回答 2

Stack Overflow用户

发布于 2017-08-30 01:50:32

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

阅读多篇文章时,看起来默认的CreationPolicy是共享的,也就是单例。因此,可能只需删除此行就可以了。

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

票数 3
EN

Stack Overflow用户

发布于 2018-10-12 23:39:34

解决方案是使用ConventionBuilder类。

假设有一个名为AppShell的类,它实现了接口IAppShell。要将其导出到共享模式,请执行以下步骤:

代码语言:javascript
复制
var conventionBuilder = new ConventionBuilder();
conventionBuilder.ForTypesDerivedFrom<IAppShell>()
    .Export<AppShell>()
    .Shared();

然后:

代码语言:javascript
复制
var config = new ContainerConfiguration()
    .WithAssemblies(new[]{ typeof(AppShell).Assembly}, conventionBuilder);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45928551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档