1

SPWeb、SPList などの SharePoint クラスから継承することは可能ですか、それともこのクラスは封印されていますか? 正解が見つかりませんでした。

クリス


返信ありがとうございます。リッチ、あなたは正しいです - コンストラクターは内部です。つまり、これらのクラスの機能をエレガントな方法で拡張できなかったということですか?

4

5 に答える 5

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' にはコンストラクターが定義されていません

于 2010-10-14T15:34:57.160 に答える
0

もちろん、拡張メソッドを使用するだけで拡張できます - http://msdn.microsoft.com/en-us/library/bb383977.aspx

私が少しプッシュしようとしている例として、https: //github.com/kerray/NAVERTICA-SPTools にある ItemTools、または ListTools またはその他のソース ファイルを見ることができます。

于 2011-10-12T19:21:24.980 に答える
0

多くの SharePoint サーバー オブジェクト モデル プログラマーがこの問題に直面したと思います。

まず、Managed Navigation を使用する SPWeb のラッパーとしてのヘルパー クラスから始めます。

要件が複雑になるにつれて、複数の種類の SPWeb を処理する必要があります。そこで、コードを作り直し、Factory クラスを作成して、型指定された SPSite と SPWeb をインスタンス化しました。管理されたメタデータ用語で SPWeb をバインドし、型情報を SPWeb プロパティと Term カスタム プロパティの両方に格納します。

これが理にかなった設計であるかどうかを Microsoft が確認できるように支援したいと思います。そして、マイクロソフトがこのためにオープンソース プロジェクトを開始する価値があるかどうか。プログラマーはビジネス ロジックに集中しなければならない場合があるため、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-インスタンス化ラッパークラスアラウンド#62c1355f-0b71-49b7-967a-648830bd6dfa

于 2015-11-16T03:36:31.443 に答える
0

MSDN ページによると、クラスは封印されていません。

SPWeb クラス

SPList クラス

これらのクラスから継承できるかもしれませんが、SharePoint にそれらを内部的に使用させることはできないため、私には意味がわかりません。

基本クラスから実際に継承するよりも、拡張メソッドを介して追加機能を提供する方が理にかなっている場合があります。

于 2010-10-14T12:55:39.520 に答える
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を参照してください。

于 2010-10-14T12:56:35.297 に答える