Le chargement paresseux peut conduire à des données périmées, viole le CIO?
https://softwareengineering.stackexchange.com/questions/156944
Question
Essayer d'être un meilleur programmeur
J'ai une application qui garde une trace des rôles et des autorisations, j'avais des cours de rôle et d'autorisation qui n'étaient que des objets de valeur.
class Role
{
int RoleID
string RoleName
}
class Permission
{
int PermissionID
string PermissionName
}
Si je voulais obtenir les autorisations pour un rôle, je ferais
List<Permission> permissions = PermissionDAL.GetPermissions(RoleID)
Mais pour plus de commodité (c'est une application de bureau), j'ai dû déplacer la collection d'autorisation vers la classe de rôle pour que je puisse faire
permissions = roleInstance.GetPermissions();
Et la classe de rôle devient
class Role
{
List<Permission> permissions = null;
int RoleID
string RoleName
public List<Permission> Permissions
{
get
{
if(permissions == null)
permissions = PermissionDAL.GetPermissions(this.RoleID);
return permissions;
}
}
}
question 1: Le défi - voici le scénario
Role r = getARole();
//for user to see
display(r.Permissions);
//user adding permission to role
RoleDAL.AddPermission(RoleID, PermissionID);
//display new permissions
display(r.Permissions);
//But no, data is not refreshed because of the null check.
//Do I need to call a new instance of this Role?
question 2 : Je pense que cela viole l'inversion du contrôle?
question 3 : Comment feriez-vous un CIO pour List<Role>
, définir les autorisations pour chaque rôle dans la collection, si l'on devait utiliser le CIO.
Merci
Pas de solution correcte