Autofac の初心者として、リポジトリをコントローラに登録する方法を見つけようとしています。リポジトリは、そのコンストラクターで Web サービスを受け取り、サーバーと通信します。このアプリケーションはマルチテナントであり、テナント名は MVC ルート データでアクセスされます。ほとんどの例のように global.asax 内のルート データにアクセスできないため、この依存関係をどこに挿入すればよいでしょうか。コードはどのようになりますか?
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 に答える