【发布时间】:2013-09-13 14:03:09
【问题描述】:
我正在为大约 6 年前开发的自定义事件接收器中的代码提供支持...没有源代码,因此我们必须反映生产程序集,并且正在努力在工作之前对其进行清理。
在代码中,我遇到了这个问题,但我不知道为什么会这样做,而且我对 SharePoint 的了解不够,无法知道是否有理由必须这样做,或者如果最初的编码员是个白痴(两者都有可能......)
public override void ItemAdded(SPItemEventProperties properties)
{
Trace.WriteLine("ItemAdded() invoked.");
base.DisableEventFiring();
base.ItemAdded(properties);
try
{
SPContext context = SPContext.GetContext(properties.OpenWeb());
SPUserToken userToken = context.Site.SystemAccount.UserToken;
using (SPSite site = new SPSite(context.Site.ID, userToken))
using (SPWeb web = site.OpenWeb(context.Web.ID))
{
SPListItem listItem = null;
try
{
listItem = web.GetListItem(properties.ListItem.Url);
web.AllowUnsafeUpdates = true;
}
catch
{
Trace.WriteLine("No Url properties, we must be running in CLI mode. Exiting...");
}
if (listItem != null)
{
SPList parentList = listItem.ParentList;
listItem = parentList.GetItemById(properties.ListItemId);
}
...
}
}
catch (Exception ex)
{
Trace.WriteLine(ex.ToString());
}
finally
{
base.EnableEventFiring();
}
}
这似乎是通过多种方式获取 SPListItem,当它在 properties 对象中传递时......网站也是如此......所以,我想我的问题是因为他们最终只是得到了无论如何,通过列表按属性列出项目,真的有任何理由通过所有其他检查/方法最终将值扔掉吗?
【问题讨论】:
标签: c# sharepoint sharepoint-2007 wss-3.0