Класс SPRoleDefinitionCollection
Представляет коллекцию объектов SPRoleDefinition , определение определений ролей, доступных для использования на веб-узле.
Иерархия наследования
System.Object
Microsoft.SharePoint.Administration.SPAutoSerializingObject
Microsoft.SharePoint.SPBaseCollection
Microsoft.SharePoint.SPRoleDefinitionCollection
Пространство имен: Microsoft.SharePoint
Сборка: Microsoft.SharePoint (в Microsoft.SharePoint.dll)
Синтаксис
'Декларация
Public NotInheritable Class SPRoleDefinitionCollection _
Inherits SPBaseCollection
'Применение
Dim instance As SPRoleDefinitionCollection
public sealed class SPRoleDefinitionCollection : SPBaseCollection
Замечания
Определения ролей могут быть унаследованы от родительского объекта SPWeb или определен локально. Для определения уникального ролей необходимо иметь уникальные разрешения (ролей), но уникальные разрешения могут иметь либо определения уникальных или унаследованные роли.
Свойство RoleDefinitions класса SPWeb для получения коллекции определений ролей для веб-узла. Чтобы создать определение роли, используйте конструктор класса SPRoleDefinition для создания экземпляра объекта, задайте свойства объекта и затем вызвать метод Add() для добавления к коллекции нового определения роли.
Указатель служит для получения одного элемента из коллекции. Например если коллекция присваивается переменной с именем collRoleDefinitions, используйтеindexcollRoleDefinitions[] в C# илиindexcollRoleDefinitions() в Visual Basic, где index является индекс элемента в коллекции или строка, содержащая имя определения роли.
Не является методом для получения назначений ролей пользователя для объекта списка SharePoint Foundation . Однако приведенный ниже код позволяет получить этот список.
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
Примеры
После разрыва наследования определения роли, в следующем примере кода создается определение роли, которое включает в себя все права, за исключением ManagePermissions; Он также задает значения свойств и добавляет новое определение роли в коллекцию определений ролей для сайта.
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
Примечание
Некоторые объекты реализуют интерфейс IDisposable и следует избегать сохранения этих объектов в памяти, после они больше не нужны. Disposing Objectsсведения о рекомендованные методы программирования, см.
Потокобезопасность
Любые общедоступные элементы static (Shared в Visual Basic) этого типа являются потокобезопасными. Не гарантируется, что любые элементы экземпляров потокобезопасны.
См. также
Справочные материалы
Элементы SPRoleDefinitionCollection