Для каждого запроса страницы, мне нужно, чтобы получить некоторые текущие данные права пользователя из базы данных, а затем использовать эту информацию несколько раз в логике (который состоит из нескольких объектов)IoC - Инициализировать состояние объекта в конструкторе
Я хочу получить данные из базы данных один раз за запрос и повторно использовать их там, где это необходимо, путем инъекции.
Это лучший способ сделать это?
1) определить объект, как этот
class ApplicationUser : IApplicationUserProvider
{
private UserPermissions _userPermissions;
...
public ApplicationUser(IDatabase userService)
{
_userPermissions = userService.GetUserPermission(); // this would executed for every request once
}
UserRoles GetRoles()
{
return _userPermissions;
}
}
2) определяют IoC что-то вроде этого
var container1 = new Container(c =>
{
c.For<IDatabase>().Use<Database>();
c.For<IApplicationUser>().Use<ApplicationUser >();
c.For<IApplicationLogic1>().Use<ApplicationLogic1>(); // this has IApplicationUser in ctor
c.For<IApplicationLogic2>().Use<ApplicationLogic2>(); // this has IApplicationUser in ctor
});
3) контроллер будет
void PageController(IApplicationLogic1 l1)
{
l1.Process();
l2.Process();
}