J'utilise l'API du modèle objet SharePoint 2007 pour attribuer un rôle à un objet SharePoint, mais quand vous faites cela, vous devez connaître le type d'objet SharePoint à l'avance, comme ceci:Est-il possible de déterminer par programme le type d'un objet SharePoint?
// apply the new roleassignment to the folder. You can do this at the listitem level if desired (i.e. this could be SPfile.Item…. instead of SPFolder.Item)
folder.Item.RoleAssignments.Add(roleAssignment);
(extrait de code de http://blogs.msdn.com/b/robgruen/archive/2007/11/15/how-to-programmatically-set-permissions-on-files-folders-in-a-sharepoint-document-library.aspx)
Je voudrais la mise en œuvre d'une méthode qui est en mesure de passer l'objet SharePoint, déterminer le type d'objet SharePoint pour ressembler à ceci:
public static bool AssignRole(string spWebUrl, object spObject, SPUser oUser, string spRoleDefinition);
Exemple objet SharePoint types seraient: SPSite, SPWeb, SPList, SPListItem, SPField, SPFolder
Toute aide sur la façon de résoudre le problème de la détermination du type de l'objet SharePoint serait très appréciée.
Sidenote:
There is a way to determine the object type (en quelque sorte), si vous connaissez l'URL complète de l'endroit où l'objet se trouve dans le site, bien que ce soit vraiment pas une route que je voudrais descendre.
Je ne pense pas que cela aidera dans ma situation. Je veux utiliser une méthode pour attribuer des autorisations à n'importe quel objet sharepoint. Je souhaite passer l'objet sharepoint en tant que paramètre, puis déterminer le type SharePoint dans la méthode et affecter l'autorisation de manière appropriée. Je préférerais ne pas avoir une méthode pour assigner des permissions à un dossier, et une méthode pour assigner des permissions à une liste aussi, etc. Peut-être que ce que je demande n'est pas possible? – program247365
@ program247365: Il est possible d'utiliser C# lui-même. Je ne suis pas sûr que Sharepoint a quelque chose. J'ai édité ma réponse pour ajouter cette information. –
La solution de Moron est bonne. Cela n'a pas de sens d'écrire une méthode capable de gérer n'importe quel type de SPObject car finalement seuls les objets hérités de SPSecurableObject peuvent stocker des permissions. SPField ne peut pas stocker d'autorisations du tout et SPSite est un cas particulier. Les administrateurs SPSite sont définis via la propriété "IsSiteAdmin" du SPUser et toutes les autres autorisations sont définies sur la racine SPWeb de la base SPSite. Donc la solution de Moron peut gérer tous les autres objets que vous avez mentionnés dans votre question. – Flo