sna*_*nap 7 c# extensibility multithreading dependency-injection mef
在对MEF进行一些研究后,我遇到了根据MSDN 的CreationPolicy.Shared属性:
指定CompositionContainer将创建关联ComposablePart的单个共享实例,并由所有请求者共享.
听起来不错,只要我始终确保只有一个容器访问我使用此策略导出的类.那么我该如何确保只有一个容器可以访问我的导出类型呢?这是我的场景:
我有一个Windows服务需要利用类似单一类的内存数据.数据是非持久性的,所以我希望每当服务启动时都会重新创建它,但是一旦服务停止它就没有用处.我的服务中的多个线程需要以线程安全的方式读取和写入此对象,因此我的初始计划是继承ConcurrentDictionary以确保针对它的线程安全操作.
将要攻击这个类的线程都是从一个抽象基类继承的,所以有没有办法让这个类(只有这个类)从MEF导入它并按照我想要的方式工作?
感谢您提供的任何提示,我对MEF很新,所以我还在学习细节
如果它绝对必须是不同容器中的单例,则可以使用私有构造函数并公开静态Instance属性,就好像它是“经典”非容器管理的单例一样。然后在组合根中,使用ComposeExportedValue将其注册到容器中:
container.ComposeExportedValue(MySingleton.Instance);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1066 次 |
| 最近记录: |