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

Licencié sous: CC-BY-SA avec attribution
scroll top