Sharepoint 是否可以从SPWeb继承?

Sharepoint 是否可以从SPWeb继承?,sharepoint,inheritance,spsite,spweb,splist,Sharepoint,Inheritance,Spsite,Spweb,Splist,可以从SharePoint类继承,例如:SPWeb、SPList等。 或者这个类是密封的?我找不到正确的答案 克里斯 谢谢你的回复。 Rich,你说得对-构造函数是内部的。这意味着我不能以任何方式扩展这些类的功能 根据他们的MSDN页面,这些类别没有密封: 即使您可以从这些类继承,但我看不出有什么意义,因为您不能强制SharePoint在内部使用它们 通过扩展方法提供添加的功能,而不是从基类实际继承,可能更有意义。SPWeb和SPList在SharePoint 2007中密封,请参阅: 但

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

克里斯


谢谢你的回复。
Rich,你说得对-构造函数是内部的。这意味着我不能以任何方式扩展这些类的功能

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

即使您可以从这些类继承,但我看不出有什么意义,因为您不能强制SharePoint在内部使用它们


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

SPWeb和SPList在SharePoint 2007中密封,请参阅:


但它们并没有在SharePoint 2010中密封,请参见:

根据Reflector,SPWeb在2007年或2010年都没有密封

2007年:

2010年:

但是,在这两个版本中,该类只有内部构造函数,因此尽管Visual Studio允许您尝试从该类继承,但它不会编译:

类型为“Microsoft.SharePoint.SPWeb” 没有定义构造函数


当然,它们可以扩展,只需使用扩展方法-


作为一个例子,我试着推动一点,你可以看看ItemTools,或ListTools或其他源文件在

我想很多SharePoint server对象模型程序员都有这个问题

首先,我简单地从一个helper类开始,作为使用托管导航的SPWeb的包装器

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

我想帮助微软找出这是否是一个合理的设计。如果微软值得为此启动一个开源项目。因为有时候程序员必须关注业务逻辑,不想一次又一次地实现工厂、抽象工厂


很有趣。如果您查看这些类的MSDN文档,您可以清楚地看到没有提到sealed关键字(就像MSDN上的其他密封类一样)。@justin,这是2007年和2010年之间的差异,我已经更新了答案,但即使您将MSDN文档切换到WSS 3.0(这是SharePoint 2007中使用的WSS),它们看起来仍然没有密封。
[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
[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