私は記事にabiguityを理解することができます - (特定のオブジェクトを配置し、それがWebパーツの開発に来るとき
:)本当の答えは、泥のように明確である(または一般にSharePointのAPIで開発)特にSPOMオブジェクト)は、オブジェクトを正しくインスタンス化しないと予測できない結果を生じます。
特に、現在のコンテキストからSPSiteまたはSPWebへのオブジェクト参照を取得し、それを破棄しようとすると(using節またはtry/finallyを使用)、SharePointからオブジェクト参照エラーが発生しますスタック。
SPオブジェクト(SPSite、SPWebなど)を処分する正しい方法は、URLを使用してサイトから新しいSPオブジェクトを取得することです(コンテキストを取得するのではなく)。例:ここでは
using (SPSite siteCollection = new SPSite("http://your_site_url"))
{
using (SPWeb site = siteCollection.OpenWeb("News"))
{
//do stuff with your news web
}
}
は、あなたがそれを使用しようとすると、オブジェクト参照エラーをスローするコードの例です。
using(contextSite = SPControl.GetContextSite(Context))
{
using (SPWeb site = siteCollection.OpenWeb("News"))
{
//do stuff with your news web
}
}
エラーが使用してブロックの間に発生しますが、しませんSharePointがサイトで内部的に何かをしようとすると、後で下流で発生します。
一般的な使い方では、IDisposableオブジェクトがある場合はtry/finallyを使って()を使うのが大好きです。 try/finallyを選択する唯一の方法は、IDisposableでないオブジェクトの割り当てを解除するために余分なロジックを必要とする場合です。
希望すると便利です。
(+1)確かに今はあまり泥ではありません、ありがとう! – vinny