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