Я реализую StructureMap в многопользовательском приложении ASP.NET MVC, чтобы внедрить экземпляры моих репозиториев , которые получают данные на основе интерфейса ITenantContext
. Tenant
, о котором идет речь, определяется из RouteData
в базовом контроллере OnActionExecuting
.
Как мне сказать StructureMap создать TenantContext(tenantID);
, где tenantID получен из моего RouteData
или какого-либо базового свойства контроллера?
Базовый контроллер
С учетом следующего маршрута:
{tenant}/{controller}/{action}/{id}
Мой базовый контроллер получает и сохраняет правильный Tenant
на основе параметра URL-адреса {tenant}. Используя Tenant
, можно создать хранилище с ITenantContext
для извлечения только данных, относящихся к этому арендатору.
Исходя из других вопросов DI, может ли AbstractFactory
быть решением?