我编写了一个对 SharePoint 网站内容进行各种修改的类。在那个类中,我实现了一个惰性解析属性
private SPWeb rootSite
{
get
{
if ( _site == null )
{
SPSite site = new SPSite( _url );
_site = site.OpenWeb();
}
return _site;
}
}
SPSite 和 SPWeb 都需要处置,根据最佳实践文档,这种情况称为跨方法处置模式......只是他们没有就如何实现模式的处置部分给出任何实际建议。
我选择让我的班级实现 IDisposable(在那里放置网站和 Web),并让调用者通过using子句访问它。那是根据“最佳实践”,还是我应该以不同的方式处理问题?
请注意,我来自严格的引用计数背景,所以如果我对垃圾处理的看法有点偏离,请纠正我。