我对 IoC 容器比较陌生,所以我提前为我的无知道歉。
我的应用程序是一个 asp.net 4.0 MVC 应用程序,它使用实体框架和一个存储库层。它是一个多租户应用程序,因此使用的连接字符串因登录的客户端而异。
连接字符串由作为指示客户端的路由的一部分传入的“键”确定。此路由数据仅在用户会话的第一个请求中出现。
路线看起来像这样:http://{host}/login/dev/
其中“dev”表示我们正在使用开发数据库。
目前,IoC 容器正在 global.asax Application_Start 事件处理程序中注册所有依赖项,并且我将“密钥”硬编码如下:
var cnString = CommonServices.GetDBConnection("dev");
container.RegisterType<IRequestMgmtRecipientRepository, RequestMgmtRecipientRepository>(
new InjectionConstructor(cnString));
Unity 有没有办法使用最初提供的路由数据根据登录的客户端动态注册存储库?
注意:我不是手动解析存储库。当控制器被实例化时,它们由容器构造。我难住了。
谢谢!