让我解释一个非常简单的例子来说明我需要什么。假设我有一个使用 MEF 的 VS 解决方案,并且具有以下广泛的项目和类结构。
- 服务器(项目)
- Server.cs(包含
Main
方法,用于启动应用程序。)
- Server.cs(包含
- 共享(项目)
- \合同
- ILogger.cs
- ISettings.cs
- \合同
- 设置(项目)
- MySettings.cs(实现 ISettings 的类)
- 记录器(项目
- MyLogger.cs(实现 ILogger 的类)
鉴于...
- 以上所有项目都引用了 Shared 项目。
- 服务器是启动应用程序,它将所有目录初始化到一个应用程序容器中。
MySettings
...我可以启动一个应用程序并MyLogger
在我的应用程序中初始化一个单例Server
。到目前为止,一切都很好。
现在,让我们假设MyLogger
需要访问输出目录的设置文件。目录位置的值存储在MySettings
对象中,该对象被初始化Server.cs
为CompositonContainer
.
由于我使用的是 MEF,因此我不想在项目中引用该Settings
项目Logger
。相反,我想使用 MEF 来获取当前的应用程序 ISettings
单例,它在我的应用程序开始时被初始化Server
并与服务器一起存在CompositionContainer
。
如何使用 MEFMySettings
从内部正确访问单例?MyLogger