我正在使用SharePoint 2007对象模型API将角色分配给SharePoint对象,但是当您执行此操作时,您必须事先知道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);
我想要实现一个能够传递SharePoint对象的方法,确定SharePoint对象的类型如下所示:
public static bool AssignRole(string spWebUrl, object spObject, SPUser oUser, string spRoleDefinition);
示例SharePoint对象类型将是:SPSite,SPWeb,SPList,SPListItem,SPField,SPFolder
非常感谢有关如何解决确定SharePoint对象类型问题的任何帮助。
旁注:
There is a way to determine the object type(有点),如果你知道对象在网站中的位置的完整网址,虽然这不是我想要去的路线。
答案 0 :(得分:3)
我认为你不想重复代码?
而不是对象为什么不使用SPRoleAssignmentCollection
?
AssignRole(string spWebUrl, SPRoleAssignmentCollection spAssignmentCollection,
SPUser oUser, string spRoleDefinition);
您将该功能称为
AssignRole(spWebUrl, spObject.RoleAssignments, oUser, spRoleDefinition);
而不是您想要的
AssignRole(spWebUrl, spObject, oUser, spRoleDefinition);
如果你真的想传递一个对象,你至少有以下选项
is
关键字有关上述两种用法的示例以及它们之间的区别,请参阅:http://bytes.com/topic/c-sharp/answers/641093-difference-between-gettype-typeof-class
我不建议有这样的方法。
什么阻止方法的用户传入List? 现在,您需要一个在无效对象中传递时抛出的异常(或返回值)。
此外,如果sharepoint添加可以分配角色的新对象,会发生什么?如果您已将此代码发送给许多客户,您现在是否会发布更新?
希望有所帮助。祝你好运!