Clase SPRoleDefinitionCollection

Representa una colección de objetos SPRoleDefinition definir las definiciones de función que están disponibles para su uso en el sitio Web.

Jerarquía de la herencia

System.Object
  Microsoft.SharePoint.Administration.SPAutoSerializingObject
    Microsoft.SharePoint.SPBaseCollection
      Microsoft.SharePoint.SPRoleDefinitionCollection

Espacio de nombres:  Microsoft.SharePoint
Ensamblado:  Microsoft.SharePoint (en Microsoft.SharePoint.dll)

Sintaxis

'Declaración
Public NotInheritable Class SPRoleDefinitionCollection _
    Inherits SPBaseCollection
'Uso
Dim instance As SPRoleDefinitionCollection
public sealed class SPRoleDefinitionCollection : SPBaseCollection

Comentarios

Definiciones de función pueden ser heredadas del objeto primario SPWeb o definidas localmente. Para que las definiciones de función única debe tener permisos exclusivos (asignaciones de funciones), pero permisos únicos pueden tener o definiciones de función única o heredados.

Utilice la propiedad RoleDefinitions de la clase SPWeb para obtener la colección de definiciones de función para un sitio Web. Para crear una definición de función, utilice un constructor de la clase SPRoleDefinition para crear instancias del objeto, establezca las propiedades del objeto y, a continuación, llame al método Add() para agregar la nueva definición de función a la colección.

Utilice un indizador para devolver un único elemento de la colección. Por ejemplo, si la colección se asigna a una variable denominada collRoleDefinitions, use collRoleDefinitions[index] en C# o collRoleDefinitions(index) en Visual Basic, donde index es el número de índice del elemento en la colección o una cadena que contiene el nombre de la definición de función.

No hay un método para recuperar las asignaciones de roles de usuario en un objeto de la lista de SharePoint Foundation . Sin embargo, el código siguiente permite recuperar esta lista.

private void AddListRoleAssignmentNodes(SPList objList)
{ 
   try
   {
      if (objList.HasUniqueRoleAssignments)
      {
         SPRoleAssignmentCollection oRoleAssignments =
            objList.RoleAssignments;

         foreach (SPRoleAssignment oRoleAssignment in oRoleAssignments)
         {
            SPPrincipal oPrincipal = oRoleAssignment.Member;
            try
            {
               // Retrieve users having explicit permissions on the list
               SPUser oRoleUser = (SPUser)oPrincipal;
            }
            catch (Exception ex)
            {
               string msg = ex.Message;
            }
            try
            {
               // Retrieve user groups having permissions on the list
               SPGroup oRoleGroup = (SPGroup)oPrincipal;

               if (oRoleGroup.Users.Count > 0)
               { 
                  string strGroupName = oRoleGroup.Name;
                  // Add code here to retrieve Users inside this User-Group
               }
            }
            catch (Exception ex)
            {
               string msg = ex.Message;
            }
         }
      }
   }
   catch (Exception ex)
   {
      string msg = ex.Message;
   }
}
Private Sub AddListRoleAssignmentNodes(ByVal objList As SPList)
   Try
     If objList.HasUniqueRoleAssignments Then
       Dim oRoleAssignments As SPRoleAssignmentCollection = objList.RoleAssignments

       For Each oRoleAssignment As SPRoleAssignment In oRoleAssignments
         Dim oPrincipal As SPPrincipal = oRoleAssignment.Member
         Try
            ' Retrieve users having explicit permissions on the list
            Dim oRoleUser As SPUser = CType(oPrincipal, SPUser)
         Catch ex As Exception
            Dim msg As String = ex.Message
         End Try
         Try
            ' Retrieve user groups having permissions on the list
            Dim oRoleGroup As SPGroup = CType(oPrincipal, SPGroup)

            If oRoleGroup.Users.Count > 0 Then
              Dim strGroupName As String = oRoleGroup.Name
              ' Add code here to retrieve Users inside this User-Group
            End If
         Catch ex As Exception
            Dim msg As String = ex.Message
         End Try
       Next oRoleAssignment
     End If
   Catch ex As Exception
     Dim msg As String = ex.Message
   End Try
End Sub

Ejemplos

Después de romper la herencia de la definición de función, en el ejemplo de código siguiente se crea una definición de función que incluye todos los derechos excepto ManagePermissions; También establece los valores de propiedad y la definición de función nueva se agrega a la colección de definiciones de función para un sitio.

string strRoleName = "Custom Role Definition";
using (SPSite oSiteCollection = new SPSite("http://Server_Name/Subsite1"))
{
    using (SPWeb oWebsite = oSiteCollection.OpenWeb())
    {

        if (!oWebsite.HasUniqueRoleDefinitions)
        {
            oWebsite.RoleDefinitions.BreakInheritance(true, true);
        }

        SPRoleDefinition oRoleDefinition = new SPRoleDefinition();
        oRoleDefinition.Name = strRoleName;
        oRoleDefinition.Description = "A role definition with all rights except ManagePermissions";
        oRoleDefinition.BasePermissions = SPBasePermissions.FullMask ^ SPBasePermissions.ManagePermissions;
        oWebsite.RoleDefinitions.Add(oRoleDefinition);
    }
}
Dim strRoleName As String = "Custom Role Definition"
Using oSiteCollection As New SPSite("http://Server_Name/Subsite1")
   Using oWebsite As SPWeb = oSiteCollection.OpenWeb()

      If Not oWebsite.HasUniqueRoleDefinitions Then
         oWebsite.RoleDefinitions.BreakInheritance(True, True)
      End If

      Dim oRoleDefinition As New SPRoleDefinition()
      oRoleDefinition.Name = strRoleName
      oRoleDefinition.Description = "A role definition with all rights except ManagePermissions"
      oRoleDefinition.BasePermissions = SPBasePermissions.FullMask Xor SPBasePermissions.ManagePermissions
      oWebsite.RoleDefinitions.Add(oRoleDefinition)
   End Using
End Using

Nota

Algunos objetos que implementan la interfaz de IDisposable y se debe evitar mantener estos objetos en la memoria cuando ya no son necesarios. Para obtener información sobre buenas prácticas de codificación, vea Disposing Objects.

Seguridad para subprocesos

Los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para subprocesos. No se garantiza que los miembros de instancias sean seguros para los subprocesos.

Vea también

Referencia

Miembros SPRoleDefinitionCollection

Espacio de nombres Microsoft.SharePoint

RoleDefinitions