Можно ли унаследовать от SPWeb? - PullRequest
1 голос
/ 14 октября 2010

Возможно наследование от классов SharePoint, таких как: SPWeb, SPList и т. Д. или это занятия запечатаны? Я не мог найти правильный ответ.

Chris


Спасибо за ответы. Рич, ты прав - конструкторы внутренние. Значит, я не могу расширить функциональность этих классов каким-либо образом?

Ответы [ 5 ]

2 голосов
/ 14 октября 2010

Согласно Reflector, SPWeb не запечатан ни в 2007, ни в 2010 году.

2007

[SharePointPermission(SecurityAction.LinkDemand, ObjectModel=true), 
SharePointPermission(SecurityAction.LinkDemand, ObjectModel=true), 
SharePointPermission(SecurityAction.LinkDemand, ObjectModel=true), 
SharePointPermission(SecurityAction.InheritanceDemand, ObjectModel=true)]
public class SPWeb : IDisposable, ISecurableObject

2010

[SubsetCallableType, 
ClientCallableType(Name="Web", ServerTypeId="{A489ADD2-5D3A-4de8-9445-49259462DCEB}", FactoryType=typeof(SPObjectFactory), ObjectIdentityPropertyName="CanonicalId"), 
SharePointPermission(SecurityAction.InheritanceDemand, ObjectModel=true), 
SharePointPermission(SecurityAction.LinkDemand, ObjectModel=true), 
SharePointPermission(SecurityAction.LinkDemand, ObjectModel=true), 
SharePointPermission(SecurityAction.LinkDemand, ObjectModel=true)]
public class SPWeb : SPSecurableObject, IDisposable

Однако в обеих версиях класс имеет только внутренние конструкторы, поэтому, хотя Visual Studio и позволит вам наследовать от класса, он не скомпилируется:

Тип "Microsoft.SharePoint.SPWeb" конструкторы не определены

0 голосов
/ 16 ноября 2015

Я думаю, что многие программисты объектной модели сервера SharePoint пришли к этой проблеме.

Сначала я просто начинаю с вспомогательного класса в качестве оболочки для SPWeb, который использует управляемую навигацию.

Поскольку требование стало более сложным, мне приходится иметь дело с более чем одним типом SPWeb.Итак, я изменил код, создав класс Factory для создания экземпляров типизированных SPSite и SPWeb.Которые связывают SPWeb с термином управляемых метаданных и сохраняют информацию о типе как в свойстве SPWeb, так и в пользовательском свойстве Term.

Я хотел бы помочь Microsoft выяснить, имеет ли этот дизайн смысл.И если Microsoft стоит начать проект с открытым исходным кодом для этого.Поскольку иногда программистам приходится концентрироваться на бизнес-логике, они не хотят снова и снова внедрять Factory, Abstract Factory.

https://social.msdn.microsoft.com/Forums/office/en-US/62c1355f-0b71-49b7-967a-648830bd6dfa/creating-a-factory-class-with-sharepoint-server-side-api-to-instantiate-a-wrapper-class-around#62c1355f-0b71-49b7-967a-648830bd6dfa

0 голосов
/ 12 октября 2011

Конечно, их можно расширять, просто используя методы расширения - http://msdn.microsoft.com/en-us/library/bb383977.aspx

В качестве примера, который я пытаюсь немного продвинуть, вы можете взглянуть на ItemTools, ListTools или другие исходные файлы в https://github.com/kerray/NAVERTICA-SPTools

0 голосов
/ 14 октября 2010

SPWeb и SPList запечатаны в SharePoint 2007, см .: http://blogs.msdn.com/b/francischeung/archive/2008/08/22/unit-testing-sharepoint-2007-applications.aspx

Но они не запечатаны в SharePoint 2010, см .: http://my.safaribooksonline.com/9781435456457/365

0 голосов
/ 14 октября 2010

Согласно их страницам MSDN, классы не запечатаны:

Класс SPWeb

Класс SPList

Четныйхотя вы, возможно, сможете наследовать от этих классов, я не вижу в этом смысла, поскольку вы не можете заставить SharePoint использовать их внутри себя.

Возможно, имеет больше смысла предоставлять дополнительные функции с помощью методов расширения, а нечем на самом деле наследование от базовых классов.

...