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