我有一个用于桌面应用程序和网络应用程序的库。
这个库引用了一个外部数据访问组件,在桌面上应该绑定为单例,在 web 上应该在请求范围内。
- 桌面项目参考核心项目
- Web 项目参考核心项目
- 核心项目引用 ExternalComponent
今天我被迫在网络客户端上这样做:
Bind<ExternalComponent.IDataAccessComponent>()
.To<ExternalComponent.DataAccessComponent()
.InRequestScope()
.WithConstructorArgument(...);
在桌面客户端上,相同但InSingletonScope()
强制我的 Web 和桌面应用程序引用 ExternalComponent.dll,这不是我的意图。
如何进行绑定,以便我可以从客户端(Web 或桌面)指定我需要此外部组件所在的范围,而无需客户端引用此数据访问组件?
我正在考虑核心项目上的一些方法,它接收客户端需要的范围并进行所有设置,但我在 Ninject API 中找不到让我这样做的东西。