如果我在 using 语句中返回,对象是否仍被释放?
我认为问题标题相当明显,因此给出以下代码,如果返回 true,SecurityDisabler 是否会被处置?
public bool CreateProxyItem(string name, Sitecore.Data.ID sourceID, Sitecore.Data.ID targetID)
{
// create an instance of the master database
Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
// get the proxy item template
Sitecore.Data.Items.TemplateItem proxyTemplate = master.Templates[Sitecore.TemplateIDs.Proxy];
using (new Sitecore.SecurityModel.SecurityDisabler())
{
// get a reference to the proxy container item
Item proxyContainer = master.Items["/sitecore/system/proxies/"];
if (proxyTemplate != null && proxyContainer != null)
{
Item proxyItem = proxyContainer.Add(name, proxyTemplate);
if (proxyItem != null)
{
proxyItem.Editing.BeginEdit();
// editing here
proxyItem.Editing.EndEdit();
return true;
}
}
}
return false;
}
Dupe of returning in the middle of a using block
Question title is fairly obvious I think, so given the following code is the SecurityDisabler disposed if true is returned?
public bool CreateProxyItem(string name, Sitecore.Data.ID sourceID, Sitecore.Data.ID targetID)
{
// create an instance of the master database
Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
// get the proxy item template
Sitecore.Data.Items.TemplateItem proxyTemplate = master.Templates[Sitecore.TemplateIDs.Proxy];
using (new Sitecore.SecurityModel.SecurityDisabler())
{
// get a reference to the proxy container item
Item proxyContainer = master.Items["/sitecore/system/proxies/"];
if (proxyTemplate != null && proxyContainer != null)
{
Item proxyItem = proxyContainer.Add(name, proxyTemplate);
if (proxyItem != null)
{
proxyItem.Editing.BeginEdit();
// editing here
proxyItem.Editing.EndEdit();
return true;
}
}
}
return false;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论