Можно ли программно определить тип объекта SharePoint? - PullRequest
0 голосов
/ 14 июня 2010

Я использую API объектной модели SharePoint 2007 для назначения роли объекту 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);

(фрагмент кода из http://blogs.msdn.com/b/robgruen/archive/2007/11/15/how-to-programmatically-set-permissions-on-files-folders-in-a-sharepoint-document-library.aspx)

Мне бы хотелось, чтобы реализация метода, способного передавать объект SharePoint, определяла тип объекта SharePoint следующим образом:

public static bool AssignRole(string spWebUrl, object spObject, SPUser oUser, string spRoleDefinition);

Примерными типами объектов SharePoint могут быть: SPSite, SPWeb, SPList, SPListItem, SPField, SPFolder

Любая помощь по решению проблемы определения типа объекта SharePoint будет высоко ценится.

Sidenote:
Существует способ определить тип объекта (вроде), если вы знаете полный URL-адрес того, где находится объект на сайте, хотя на самом деле это не маршрут, которым я пользуюсь. 'Я хотел бы пойти вниз.

1 Ответ

3 голосов
/ 14 июня 2010

Полагаю, вы не хотите дублировать код?

Вместо объекта почему бы не использовать SPRoleAssignmentCollection?

AssignRole(string spWebUrl, SPRoleAssignmentCollection spAssignmentCollection, 
           SPUser oUser, string spRoleDefinition); 

И вы вызываете функцию как

AssignRole(spWebUrl, spObject.RoleAssignments, oUser, spRoleDefinition); 

вместо вашего предполагаемого

AssignRole(spWebUrl, spObject, oUser, spRoleDefinition); 

Если вы действительно хотите передать объект, у вас есть по крайней мереследующие параметры

  • используют ключевое слово is
  • , используют методы GetType и TypeOf для сравнения идентификаторов типов.

В качестве примера использованияиз вышеупомянутых двух, а также их различие, см .: http://bytes.com/topic/c-sharp/answers/641093-difference-between-gettype-typeof-class

Я бы не советовал иметь такой метод.

Что мешает пользователям метода передавать в List?Теперь вам понадобится исключение, которое выдается (или возвращаемое значение) при передаче в недопустимый объект.

Кроме того, что произойдет, если sharepoint добавит новые объекты, которым могут быть назначены роли?Если вы уже отправили этот код многим клиентам, вы бы отправили обновление?

Надеюсь, это поможет.Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...