Für jede Anfrage initialisieren, muss ich einige aktuelle Benutzerberechtigungen Daten aus der Datenbank erhalten und dann in der Logik diese Informationen mehrmals verwenden (die aus mehreren Objekten besteht)IoC - Objektzustand im Konstruktor
Ich möchte einmal pro Anfrage Daten aus der Datenbank abrufen und sie bei Bedarf wiederverwenden.
Ist das Folgende der beste Weg, dies zu tun?
1) definieren ein Objekt wie folgt
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) definieren, das IOC etwas wie diese
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) die Steuerung
void PageController(IApplicationLogic1 l1)
{
l1.Process();
l2.Process();
}