1

是否可以从 SharePoint 类继承,例如:SPWeb、SPList 等,或者这些类是密封的?我找不到正确的答案。

克里斯


感谢您的回复。丰富,你是对的 - 构造函数是内部的。所以这意味着我不能以任何优雅的方式扩展这些类的功能?

4

5 回答 5

2

根据 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”类型没有定义构造函数

于 2010-10-14T15:34:57.160 回答
0

当然,它们可以扩展,只需使用扩展方法 - http://msdn.microsoft.com/en-us/library/bb383977.aspx

作为一个例子,我试图推动一下,您可以查看https://github.com/kerray/NAVERTICA-SPTools中的 ItemTools、ListTools 或其他源文件

于 2011-10-12T19:21:24.980 回答
0

根据他们的 MSDN 页面,这些类没有密封:

SPWeb 类

SPList 类

即使您可以从这些类继承,我也看不出重点,因为您不能强制 SharePoint 在内部使用它们。

通过扩展方法提供您添加的功能而不是实际从基类继承可能更有意义。

于 2010-10-14T12:55:39.520 回答
0

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

于 2010-10-14T12:56:35.297 回答
0

我想很多 SharePoint 服务器对象模型程序员都遇到过这个问题。

首先,我只是从一个帮助类开始作为 SPWeb 的包装器,它使用托管导航。

随着需求变得更加复杂,我必须处理不止一种类型的 SPWeb。所以,我重构了代码,创建了一个工厂类来实例化类型化的 SPSite 和 SPWeb。它将 SPWeb 与托管元数据术语绑定,并将类型信息存储在 SPWeb 属性和术语自定义属性中。

我想帮助微软看看这是否是一个有意义的设计。如果微软为此启动一个开源项目是否值得。由于有时程序员不得不专注于业务逻辑,不想一次又一次地实现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-实例化包装类周围#62c1355f-0b71-49b7-967a-648830bd6dfa

于 2015-11-16T03:36:31.443 回答