是否可以从 SharePoint 类继承,例如:SPWeb、SPList 等,或者这些类是密封的?我找不到正确的答案。
克里斯
感谢您的回复。丰富,你是对的 - 构造函数是内部的。所以这意味着我不能以任何优雅的方式扩展这些类的功能?
是否可以从 SharePoint 类继承,例如:SPWeb、SPList 等,或者这些类是密封的?我找不到正确的答案。
克里斯
感谢您的回复。丰富,你是对的 - 构造函数是内部的。所以这意味着我不能以任何优雅的方式扩展这些类的功能?
根据 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”类型没有定义构造函数
当然,它们可以扩展,只需使用扩展方法 - http://msdn.microsoft.com/en-us/library/bb383977.aspx
作为一个例子,我试图推动一下,您可以查看https://github.com/kerray/NAVERTICA-SPTools中的 ItemTools、ListTools 或其他源文件
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
我想很多 SharePoint 服务器对象模型程序员都遇到过这个问题。
首先,我只是从一个帮助类开始作为 SPWeb 的包装器,它使用托管导航。
随着需求变得更加复杂,我必须处理不止一种类型的 SPWeb。所以,我重构了代码,创建了一个工厂类来实例化类型化的 SPSite 和 SPWeb。它将 SPWeb 与托管元数据术语绑定,并将类型信息存储在 SPWeb 属性和术语自定义属性中。
我想帮助微软看看这是否是一个有意义的设计。如果微软为此启动一个开源项目是否值得。由于有时程序员不得不专注于业务逻辑,不想一次又一次地实现Factory、Abstract Factory。