SPRoleDefinitionCollection class
表示定義可用於 Web 站台內的角色定義的SPRoleDefinition物件的集合。
Inheritance hierarchy
System.Object
Microsoft.SharePoint.Administration.SPAutoSerializingObject
Microsoft.SharePoint.SPBaseCollection
Microsoft.SharePoint.SPRoleDefinitionCollection
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
'宣告
Public NotInheritable Class SPRoleDefinitionCollection _
Inherits SPBaseCollection
'用途
Dim instance As SPRoleDefinitionCollection
public sealed class SPRoleDefinitionCollection : SPBaseCollection
備註
角色定義可以繼承自父SPWeb物件,或在本機定義。為了有唯一的角色定義中,您必須具有唯一權限 (角色指派),但特有的權限可以有任一唯一或繼承的角色定義。
使用SPWeb類別的RoleDefinitions屬性來取得網站的角色定義的集合。若要建立角色定義,請使用SPRoleDefinition類別的建構函式來具現化物件、 物件上設定屬性,然後呼叫**Add()**方法,以將新的角色定義加入至集合。
使用索引子來從集合傳回單一項目。例如,如果集合指派給一個名為collRoleDefinitions變數中,使用在 C# 的collRoleDefinitions[index]或 Visual Basic,其中index是集合中項目的索引編號,或是包含角色定義名稱的字串中的collRoleDefinitions(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
Examples
之後中斷角色定義繼承,下列程式碼範例會建立包含除了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。 |
Thread safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
請參閱
參照
SPRoleDefinitionCollection members