作为 Autofac 的新手,我试图弄清楚如何为我的控制器注册我的存储库。Repository 在其构造函数中使用一个 Web 服务来与服务器通信。此应用程序是多租户的,租户名称在 MVC 路由数据中访问。由于我无法像大多数示例一样访问 global.asax 中的路由数据,我在哪里注入此依赖项以及代码会是什么样子?
问问题
615 次
1 回答
1
尝试Autofac.Features.Indexed.IIndex<K, V>
允许您构建键到实现的映射的类型。
public enum RepositoryWebServices { ServiceA, ServiceB, ServiceC }
builder.RegisterType<MyServiceA>().Keyed<IWebService>(RepositoryWebServices.ServiceA);
builder.RegisterType<MyServiceB>().Keyed<IWebService>(RepositoryWebServices.ServiceB);
builder.RegisterType<MyServiceC>().Keyed<IWebService>(RepositoryWebServices.ServiceC );
public MyRepository : IRepository
{
IIndex<RepositoryWebServices, IWebService> _webServices;
public MyRepository(IIndex<RepositoryWebServices, IWebService> webServices)
{
_webServices = webServices;
}
public UseWebService(string tenant)
{
IWebService webService = _webServices[(RepositoryWebServices)Enum.Parse(typeof(RepositoryWebServices), tenant)];
// use webService
}
}
于 2010-08-26T23:15:52.940 回答