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