Freigeben über


SPRoleDefinitionCollection-Klasse

Stellt eine Auflistung von SPRoleDefinition -Objekten definieren die Rollendefinitionen, die in der Website verfügbar sind.

Vererbungshierarchie

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

Namespace:  Microsoft.SharePoint
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)

Syntax

'Declaration
Public NotInheritable Class SPRoleDefinitionCollection _
    Inherits SPBaseCollection
'Usage
Dim instance As SPRoleDefinitionCollection
public sealed class SPRoleDefinitionCollection : SPBaseCollection

Hinweise

Rollendefinitionen können vom übergeordneten SPWeb Objekt geerbt oder lokal definiert werden. Um eindeutige Rollendefinitionen benötigen Sie eindeutige Berechtigungen (Rollenzuweisungen) können, eindeutige Berechtigungen jedoch entweder eindeutige oder geerbten Rollendefinitionen.

Verwenden Sie die RoleDefinitions -Eigenschaft der SPWeb -Klasse zum Abrufen der Auflistung von Rollendefinitionen für eine Website. Um eine Rollendefinition zu erstellen, verwenden Sie einen Konstruktor der SPRoleDefinition -Klasse instanziieren des Objekts, legen Sie Eigenschaften für das Objekt, und rufen Sie die Add() -Methode, um der Auflistung neue Rollendefinition hinzufügen.

Verwenden Sie einen Indexer, ein einzelnes Element aus der Auflistung zurückzugeben. Verwenden Sie z. B., wenn die Auflistung in eine Variable namens collRoleDefinitionszugewiesen wird, collRoleDefinitions[index] in C# oder collRoleDefinitions(index) in Visual Basic, wo index ist entweder die Indexnummer des Elements in der Auflistung oder eine Zeichenfolge, die den Namen der Rollendefinition enthält.

Es ist keine Methode zum Abrufen von Benutzerrollen für ein List-Objekt SharePoint Foundation . Jedoch können mit der folgenden Code zum Abrufen dieser Liste.

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

Beispiele

Nach dem Aufteilen von Vererbung zur Definition von Rollen, erstellt im folgenden Codebeispiel wird eine Rollendefinition, die alle Rechte außer ManagePermissionsenthält. Außerdem legt Eigenschaftswerte und neue Rollendefinition der Auflistung von Rollendefinitionen für eine Website hinzugefügt.

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

Hinweis

Bestimmte Objekte, die IDisposable -Schnittstelle implementieren, und müssen Sie vermeiden, diese Objekte im Arbeitsspeicher beibehalten, nachdem sie nicht mehr benötigt werden. Informationen zu bewährten Programmierpraktiken finden Sie unter Disposing Objects.

Threadsicherheit

Alle öffentlichen static (Shared in Visual Basic) Member dieses Typs sind threadsicher. Die Threadsicherheit von Instanzmembern ist nicht gewährleistet.

Siehe auch

Referenz

SPRoleDefinitionCollection-Member

Microsoft.SharePoint-Namespace

RoleDefinitions