Domanda

Cercando di essere un programmatore migliore

Ho un'applicazione che tiene traccia di ruoli e autorizzazioni, avevo lezioni per il ruolo e il permesso che erano solo oggetti di valore.

class Role
{
  int RoleID
  string RoleName
}

class Permission
{
  int PermissionID
  string PermissionName
}

Se volessi ottenere le autorizzazioni per un ruolo che farei

List<Permission> permissions = PermissionDAL.GetPermissions(RoleID)

Ma per comodità (è un'applicazione desktop) ho dovuto spostare la raccolta di autorizzazioni alla classe di ruolo in modo da poterlo fare

permissions = roleInstance.GetPermissions();

E la classe di ruolo diventa

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;
     }
  }
}

Domanda 1: The Challenge - Ecco lo scenario

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?

Domanda 2 : Penso che questo violi l'inversione del controllo?

Domanda 3 : Come faresti un CIO per List<Role>, Impostazione delle autorizzazioni per ciascun ruolo nella raccolta, se si dovesse usare il CIO.

Grazie

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top