gpt4 book ai didi

c# - 具有依赖注入(inject)的类单例行为

转载 作者:太空狗 更新时间:2023-10-29 20:40:14 32 4
gpt4 key购买 nike

在对 MEF 进行一些研究后,我发现了 CreationPolicy.Shared 属性,根据 MSDN:

Specifies that a single shared instance of the associated ComposablePart will be created by the CompositionContainer and shared by all requestors.

听起来不错,只要我始终确保只有一个容器访问我使用此策略导出的类。那么我该如何确保只有一个容器访问我导出的类型呢?这是我的场景:

我有一个 Windows 服务需要为一些内存中的数据接入一个类似单例的类。数据是非持久性的,所以我希望在服务启动时重新创建它,但一旦服务停止,它就没有任何用处。我的服务中的多个线程需要以线程安全的方式读写这个对象,所以我最初的计划是继承自 ConcurrentDictionary。以确保针对它的线程安全操作。

将利用此类的线程都继承自单个抽象基类,那么有没有办法让此类(且仅此类)从 MEF 导入它并按照我想要的方式工作?

感谢您提供的任何提示,我是 MEF 的新手,所以我仍在学习来龙去脉

最佳答案

如果它绝对必须是不同容器中的单例,您可以使用私有(private)构造函数并公开静态 Instance 属性,就好像它是“经典”非容器管理的单例一样。然后在组合根中,使用 ComposeExportedValue将其注册到容器中:

container.ComposeExportedValue(MySingleton.Instance);

关于c# - 具有依赖注入(inject)的类单例行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11056111/

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