public SPRoleDefinitionInstance GetById(int id)
        {
            var result = m_roleDefinitionCollection.GetById(id);

            return(result == null
        ? null
        : new SPRoleDefinitionInstance(Engine.Object.InstancePrototype, result));
        }
        public static void AddPermissions(this SPListItem item, List <SPPrincipal> principals, int roleId)
        {
            SPRoleDefinitionCollection webroledefinitions = item.Web.RoleDefinitions;

            foreach (SPPrincipal principal in principals)
            {
                if (!item.IsPrincipalInItemRole(principal, roleId) && !Regex.IsMatch(principal.Name, @"svc_|system|app@sharepoint"))
                {
                    if (!item.HasUniqueRoleAssignments)
                    {
                        item.BreakRoleInheritance(true);
                    }

                    SPRoleAssignment assignment = new SPRoleAssignment(principal);
                    assignment.RoleDefinitionBindings.Add(webroledefinitions.GetById(roleId));
                    item.RoleAssignments.Add(assignment);
                }
            }
        }