Quand faire appel à Disposer si le passage SPContext.Site d'une bibliothèque de classe?

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/75597

  •  10-12-2019
  •  | 
  •  

Question

Je suis à la recherche d'un peu de bon sens vérifiez sur celui-ci!

Je suis à la recherche d'un grand nombre de classes qui ont SPSite ou SPWeb en tant que constructeur de la classe.

La classe est instanciée à l'aide de SPContext.Site comme le SPSite paramètre

par exemple

public MyClass {
  SPWeb _web;
  public MyClass(SPSite site) {
    _web = site.RootWeb;
  }
  // Other methods that make use of _web
}

Devrait _web être éliminés?Est _web simplement un pointeur vers SPContext.Site.RootWeb ou est-il une autre copie de SPWeb qui doivent être éliminés?

Je sais qu'avec SPContext.Site.OpenWeb() vous devriez appeler Dispose().

Alors que pensez-vous ci-dessus, l'usage?

Va passer SPSite / SPWeb que de l'affecter à une variable locale toujours juste la référence à la même SPContext ?

Était-ce utile?

La solution

Dans votre cas _web n'a pas besoin d'être éliminés comme vous l'obtenir à partir de la RootWeb et web des objets récupérés à partir de RootWeb besoin de ne pas être éliminés.

EIDT

Aussi, si l' SPSite objet passé en paramètre au constructeur de la classe est dérivée de la SPContext, il n'a pas besoin d'être éliminés.Sinon, il doit être disposé soit dans la classe ou de la classe d'appel en fonction des besoins.

Autres conseils

Ne pas explicitement appeler () sur la propriété spsite.rootweb.Le nettoyage de Dispose sera traité automatiquement par le SharePoint et le .NET Framework.Pour les personnalisations SharePoint existantes, le retrait de la racine de racine explicite est recommandé pour éviter une condition de cas de bord où le SPContext.current.web a une égalité au spsite.rootweb.Les problèmes peuvent se produire lors de la mise au rebut rootweb lorsqu'il est obtenu à partir de toute variation de SPContext (par exemple: spcontext.site.rootweb, spcontext.current.site.rootweb et getcontextsite (contexte) .rootweb).

Pour plus de visites ... msdn

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top