2010-10-14 139 views
1

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

克里斯


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

回答

0

根据自己的MSDN页面,类不是密封:

SPWeb Class

SPList Class

即使你可能能够从这些类继承,我不明白这一点,因为您不能强制SharePoint在内部使用它们。

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

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

+0

有趣。如果您查看这些类的MSDN文档,您可以清楚地看到密封关键字未提及(因为它是MSDN上的其他密封类)。 – 2010-10-14 12:58:45

+0

@justin,这是2007年和2010年之间的差异,我更新了答案 – 2010-10-14 13:00:42

+0

但即使您将MSDN文档切换到WSS 3.0(这是SharePoint 2007中使用的WSS),它们仍然不会显示为密封。 – 2010-10-14 13:01:45

2

根据反射器,的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

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

起初,我只是从辅助类开始,将其作为SPWeb的包装器,它使用托管导航。

随着要求变得更加复杂,我必须处理多种类型的SPWeb。所以,我重写了代码,创建了一个Factory类来实例化SPSite和SPWeb。它将带有托管元数据术语的SPWeb绑定在一起,并将类型信息存储在SPWeb属性和Term定制属性中。

我想帮助微软找出这是否是一种有意义的设计。如果微软为此开启一个开源项目是值得的。由于有时程序员必须专注于业务逻辑,因此不想一次又一次地实施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

相关问题